Pular para o conteúdo

Fóruns SQL e PL/SQL Erro com Cursor em Procedure Erro com Cursor em Procedure

#85516
Yoke
Participante

    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;