› Fóruns › SQL e PL/SQL › Erro com Cursor em Procedure › Erro com Cursor em Procedure
create or replace PROCEDURE PRC_IMPORTA_FUNCAO AS
V_CONT INTEGER := 0;
BEGIN
-- INICIA O LOOP DE ATUALIZACAO
FOR V_CURSOR IN (SELECT R_E_C_N_O_ RECNO, CODIGO_FUNCAO CODIGO, NOME DESCRICAO
FROM VW_SIG_FUNCAO)
--WHERE INDPROCESSA_FINAN IS NULL OR INDPROCESSA_FINAN = '') LOOP
SELECT COUNT(*)
INTO V_CONT
FROM VW_ORA_FUNCAO
WHERE FNC_RECNO = V_CURSOR.RECNO;
-- SE NAO TIVER INSERIRE NO ORACLE DE BAURU
IF((V_CONT <= 0) OR (V_CONT IS NULL))THEN
INSERT INTO VW_ORA_FUNCAO(FNC_RECNO, FNC_CODIGO, FNC_DESCRICAO)
VALUES(V_CURSOR.RECNO, V_CURSOR.CODIGO, V_CURSOR.DESCRICAO);
-- SE NAO ATUALIZA O REGISTRO EXSITENTE NO ORACLE DE BAURU
ELSE
UPDATE VW_ORA_FUNCAO SET
FNC_CODIGO = V_CURSOR.CODIGO,
FNC_DESCRICAO = V_CURSOR.DESCRICAO
WHERE FNC_RECNO = V_CURSOR.RECNO;
END IF;
-- ATUALIZA O BANCO
COMMIT;
END LOOP;
-- SE HOUVER ALGUM ERRO ELE VOLTA TUDO QUE FOI FEITO PARA NAO GRAVAR DADOS
-- CORROMPIDOS NO BANCO DE DADOS
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END PRC_IMPORTA_FUNCAO;