Exemplo de stored procedure firebird
02/07/2019
0
Olá pessoal!
Preciso de um exemplo de stored procedure firebird, que faça loop em uma consulta para fazer update em outra.
Podem ajudar?!
Preciso de um exemplo de stored procedure firebird, que faça loop em uma consulta para fazer update em outra.
Podem ajudar?!
Elaine Urgal
Curtir tópico
+ 0
Responder
Post mais votado
03/07/2019
Boa noite Elaine!!!
Se eu entendi bem o que você deseja, esse exemplo que eu criei vai te ajudar:
Nesse exemplo eu faço um loop na tabela de sócios e atualizo todos os dependentes daquele sócio com a data de carência dele.
Espero que tenha te ajudado!!!
Qualquer dúvida estou a disposição!!!
Se eu entendi bem o que você deseja, esse exemplo que eu criei vai te ajudar:
CREATE TABLE SOCIO( ID INT, NOME VARCHAR(50), CARENCIA DATE ); INSERT INTO SOCIO(ID, NOME, CARENCIA) VALUES(1, 'DANIEL', '2019.05.22'); INSERT INTO SOCIO(ID, NOME, CARENCIA) VALUES(2, 'BRUNNA', '2019.07.02'); CREATE TABLE DEPENDENTE( ID INT, SOCIO_ID INT, NOME VARCHAR(50), CARENCIA DATE ); INSERT INTO DEPENDENTE(ID, SOCIO_ID, NOME, CARENCIA) VALUES(1, 1, 'MANOEL', NULL); INSERT INTO DEPENDENTE(ID, SOCIO_ID, NOME, CARENCIA) VALUES(2, 1, 'HERONDINA', NULL); INSERT INTO DEPENDENTE(ID, SOCIO_ID, NOME, CARENCIA) VALUES(3, 2, 'MARCOS', NULL); INSERT INTO DEPENDENTE(ID, SOCIO_ID, NOME, CARENCIA) VALUES(4, 2, 'VERA', NULL); CREATE OR ALTER PROCEDURE P_ATUALIZA_CARENCIA_DEPENDENTE() AS DECLARE PARAR_LACO CHAR(1); DECLARE V_ID INT; DECLARE V_DATA DATE; DECLARE CRSR CURSOR FOR(SELECT ID, CARENCIA FROM SOCIO); BEGIN OPEN CRSR; PARAR_LACO = 'N'; WHILE (PARAR_LACO = 'N') DO BEGIN FETCH CRSR INTO V_ID, V_DATA; IF (ROW_COUNT = 1) THEN BEGIN UPDATE DEPENDENTE SET CARENCIA = :V_DATA WHERE SOCIO_ID = :V_ID; END ELSE PARAR_LACO = 'S'; END CLOSE CRSR; END; EXECUTE PROCEDURE P_ATUALIZA_CARENCIA_DEPENDENTE; SELECT * FROM DEPENDENTE;
Nesse exemplo eu faço um loop na tabela de sócios e atualizo todos os dependentes daquele sócio com a data de carência dele.
Espero que tenha te ajudado!!!
Qualquer dúvida estou a disposição!!!
Daniel Araújo
Responder
Clique aqui para fazer login e interagir na Comunidade :)