Converter CURSOR Oracle para Function POSTGRES
09/03/2015
0
Bom dia, a todos!
Alguém saberia como converter um CURSOR (abaixo funciona no Oracle) para uma FUNCTION no banco de dados POSTGRES 9.1?
DECLARE
/** VALOR INICIAL DA VARIAVEL**/
v_SALDO TBESTOQUETANQUES.INICIAL%TYPE := 4319.74;
BEGIN
FOR TESTE IN (
SELECT CODIGO,DATA,DESCRICAO,INICIAL,COMPRAS,VENDAS,PERIODO FROM TBESTOQUETANQUES ORDER BY PERIODO)
LOOP
/** IRAR ALTERAR O INICIAL DE ACORDO COM O VALOR QUE ESTÁ NA MINHA VARIAVEL**/
UPDATE TBESTOQUETANQUES SET INICIAL=v_SALDO WHERE CODIGO=TESTE.CODIGO;
/** MOSTRAR COMO ESTÁ INDO**/
DBMS_OUTPUT.PUT_LINE(TESTE.CODIGO||' ---- '||TESTE.DATA||' ---- '||
TESTE.DESCRICAO||' ---- '||TESTE.INICIAL||' ---- '||TESTE.COMPRAS||' ---- '||TESTE.VENDAS||' ---- '||TESTE.PERIODO);
/** EFETUO O CALCULO PARA IDENTIFICAR O VALOR DO PROXIMO REGISTRO DO INICIAL**/
SELECT ((INICIAL-VENDAS)+COMPRAS) INTO v_SALDO FROM TBESTOQUETANQUES
WHERE CODIGO=TESTE.CODIGO;
COMMIT;
END LOOP;
END;
Abraço
Alguém saberia como converter um CURSOR (abaixo funciona no Oracle) para uma FUNCTION no banco de dados POSTGRES 9.1?
DECLARE
/** VALOR INICIAL DA VARIAVEL**/
v_SALDO TBESTOQUETANQUES.INICIAL%TYPE := 4319.74;
BEGIN
FOR TESTE IN (
SELECT CODIGO,DATA,DESCRICAO,INICIAL,COMPRAS,VENDAS,PERIODO FROM TBESTOQUETANQUES ORDER BY PERIODO)
LOOP
/** IRAR ALTERAR O INICIAL DE ACORDO COM O VALOR QUE ESTÁ NA MINHA VARIAVEL**/
UPDATE TBESTOQUETANQUES SET INICIAL=v_SALDO WHERE CODIGO=TESTE.CODIGO;
/** MOSTRAR COMO ESTÁ INDO**/
DBMS_OUTPUT.PUT_LINE(TESTE.CODIGO||' ---- '||TESTE.DATA||' ---- '||
TESTE.DESCRICAO||' ---- '||TESTE.INICIAL||' ---- '||TESTE.COMPRAS||' ---- '||TESTE.VENDAS||' ---- '||TESTE.PERIODO);
/** EFETUO O CALCULO PARA IDENTIFICAR O VALOR DO PROXIMO REGISTRO DO INICIAL**/
SELECT ((INICIAL-VENDAS)+COMPRAS) INTO v_SALDO FROM TBESTOQUETANQUES
WHERE CODIGO=TESTE.CODIGO;
COMMIT;
END LOOP;
END;
Abraço
Vinicius Redorat
Curtir tópico
+ 0
Responder
Posts
09/03/2015
Vinicius Redorat
Boa tarde, Jair!
Primeiramente obrigado pelo retorno.
Referente sua resposta, declarei TESTE como Record, mas, não o cursor não roda no POSTGRES, e sim no Oracle.
Primeiramente obrigado pelo retorno.
Referente sua resposta, declarei TESTE como Record, mas, não o cursor não roda no POSTGRES, e sim no Oracle.
Responder
Clique aqui para fazer login e interagir na Comunidade :)