Pular para o conteúdo

Fóruns Banco de dados Oracle Ora-06159 Ora-06159

#105808
elciodba
Participante

    Qual é motivo que não é recomendando usar COMMIT na trigger ????? Qual é a função desse comando?

    create or replace trigger TRG_COMPART_TRAB_REFER
    after insert on crd.trab_referencia
    REFERENCING NEW AS NEW
    for each row
    declare
    Pragma Autonomous_Transaction;
    v_compartilha_cadastro crd.regras_negocio.compartilha_cadastro%type := null;
    v_empresa_origem crd.cliente.empresa_origem%type;
    v_cpf_cgc crd.cliente.cpf_cgc%type;
    v_debug varchar2(1000);

    –CURSOR PARA ATUALIZA¿¿O DO CADASTRO COMPARTILHADO
    cursor cur_dados_compart (pc_codcpf_cgc in crd.cliente.cpf_cgc%type,
    pc_empresa_origem in crd.cliente.empresa_origem%type) is
    select cli.empresa empresacli, cli.cliente, cli.empresa_origem, cli.loja_origem,
    rn.empresa , rn.compartilha_cadastro
    from crd.cliente cli, crd.regras_negocio rn
    where cli.cpf_cgc = pc_codcpf_cgc
    and cli.empresa_origem = rn.empresa
    and cli.empresa_origem NOT IN (pc_empresa_origem)
    and rn.compartilha_cadastro = ‘S’;
    reg_dados_compart cur_dados_compart%rowtype;
    begin

    begin
    select cli.cpf_cgc, cli.empresa_origem, rn.compartilha_cadastro
    into v_cpf_cgc, v_empresa_origem, v_compartilha_cadastro
    from crd.cliente cli, crd.regras_negocio rn
    where cli.empresa = :NEW.EMPRESA
    and cli.cliente = :NEW.CLIENTE
    and cli.empresa_origem = rn.empresa;
    exception when others then
    v_compartilha_cadastro := ‘N’;
    end;

    if user ‘REPADMIN’ then
    IF INSERTING THEN
    if(v_compartilha_cadastro = ‘S’) then

           open cur_dados_compart(v_cpf_cgc, v_empresa_origem);
           loop
              fetch cur_dados_compart into reg_dados_compart;
              exit when cur_dados_compart%notfound;    
                   begin
                      UPDATE crd.trab_referencia
                      SET PAI                   = :NEW.PAI,
                      MAE                       = :NEW.MAE,
                      TRABALHO                  = :NEW.TRABALHO,
                      LOGRADOURO                = :NEW.LOGRADOURO,
                      ENDERECO                  = :NEW.ENDERECO,
                      NUMERO                    = :NEW.NUMERO,
                      COMPLEMENTO               = :NEW.COMPLEMENTO,
                      BAIRRO                    = :NEW.BAIRRO,
                      CIDADE                    = :NEW.CIDADE,
                      UF                        = :NEW.UF,
                      CEP                       = :NEW.CEP,
                      TELEFONE                  = :NEW.TELEFONE,
                      CELULAR                   = :NEW.CELULAR,
                      ENVIA_E_MAIL              = :NEW.ENVIA_E_MAIL,
                      E_MAIL                    = :NEW.E_MAIL,
                      SALARIO                   = :NEW.SALARIO,
                      RENDA                     = :NEW.RENDA,
                      RENDA_NOMINAL             = :NEW.RENDA_NOMINAL,
                      ADMISSAO                  = :NEW.ADMISSAO,
                      CGC_SOCIED                = :NEW.CGC_SOCIED,
                      CAPITAL_SOC               = :NEW.CAPITAL_SOC,
                      COTAS_SOC                 = :NEW.COTAS_SOC,
                      RESIDENCIA_SITUACAO       = :NEW.RESIDENCIA_SITUACAO,
                      TEMPO_RESIDENCIA          = :NEW.TEMPO_RESIDENCIA,
                      VAL_ALUGUEL               = :NEW.VAL_ALUGUEL,
                      TELEFONE_SITUACAO         = :NEW.TELEFONE_SITUACAO,
                      QTD_DEPENDENTES           = :NEW.QTD_DEPENDENTES,
                      CARTOES_CREDITO           = :NEW.CARTOES_CREDITO,
                      MARCA_VEICULO             = :NEW.MARCA_VEICULO,
                      MODELO_VEICULO            = :NEW.MODELO_VEICULO,
                      ANO_VEICULO               = :NEW.ANO_VEICULO,
                      REF1_PESSOAL              = :NEW.REF1_PESSOAL,
                      END1_REF_PESSOAL          = :NEW.END1_REF_PESSOAL,
                      TEL1_REF_PESSOAL          = :NEW.TEL1_REF_PESSOAL,
                      REF2_PESSOAL              = :NEW.REF2_PESSOAL,
                      END2_REF_PESSOAL          = :NEW.END2_REF_PESSOAL,
                      TEL2_REF_PESSOAL          = :NEW.TEL2_REF_PESSOAL,
                      BCO1_BANCO                = :NEW.BCO1_BANCO,
                      BCO1_AGENCIA              = :NEW.BCO1_AGENCIA,
                      BCO1_CONTA                = :NEW.BCO1_CONTA,
                      BCO2_BANCO                = :NEW.BCO2_BANCO,
                      BCO2_AGENCIA              = :NEW.BCO2_AGENCIA,
                      BCO2_CONTA                = :NEW.BCO2_CONTA,
                      AUTORIZA_DEBITO           = :NEW.AUTORIZA_DEBITO,
                      RENDA_FAMILIAR            = :NEW.RENDA_FAMILIAR,
                      VAL_COTAS_SOC             = :NEW.VAL_COTAS_SOC,
                      DATA_FUNDACAO_SOC         = :NEW.DATA_FUNDACAO_SOC,
                      SITUACAO_VEICULO          = :NEW.SITUACAO_VEICULO,
                      VALOR_VEICULO             = :NEW.VALOR_VEICULO,
                      BCO1_TIPO_CONTA           = :NEW.BCO1_TIPO_CONTA,
                      BCO2_TIPO_CONTA           = :NEW.BCO2_TIPO_CONTA,
                      BCO1_CLI_DESDE            = :NEW.BCO1_CLI_DESDE,
                      BCO2_CLI_DESDE            = :NEW.BCO2_CLI_DESDE,
                      GRAU_INSTRUCAO            = :NEW.GRAU_INSTRUCAO,
                      APRESENTOU_END            = :NEW.APRESENTOU_END,
                      RAMAL1_REF_PESSOAL        = :NEW.RAMAL1_REF_PESSOAL,
                      RAMAL2_REF_PESSOAL        = :NEW.RAMAL2_REF_PESSOAL,
                      POSSUI_SEGURO             = :NEW.POSSUI_SEGURO,
                      TIPO_RENDA_PRESUMIDA      = :NEW.TIPO_RENDA_PRESUMIDA,
                      VALOR_RENDA_PRESUMIDA     = :NEW.VALOR_RENDA_PRESUMIDA,
                      QTD_PRESTACAO_PRESUMIDA   = :NEW.QTD_PRESTACAO_PRESUMIDA,
                      EMPRESA_USUARIO           = :NEW.EMPRESA_USUARIO,
                      TIPO_RENDIMENTO           = :NEW.TIPO_RENDIMENTO,
                      TEMPO_TRABALHO            = :NEW.TEMPO_TRABALHO,
                      TEMPO_RESIDENCIA1         = :NEW.TEMPO_RESIDENCIA1,
                      TIPO_LOG_CEP              = :NEW.TIPO_LOG_CEP,
                      CELULAR_REF1_PESSOAL      = :NEW.CELULAR_REF1_PESSOAL,
                      CELULAR_REF2_PESSOAL      = :NEW.CELULAR_REF2_PESSOAL
                      WHERE EMPRESA             = reg_dados_compart.empresacli
                      and CLIENTE               = reg_dados_compart.cliente; 
                   exception when others then
    
                      htp.print('erro');                      
                   end;
                end loop;
                close cur_dados_compart;
    
                COMMIT;
        end if;
     END IF;
    

    end if;

    end TRG_COMPART_TRAB_REFER;

    Muito obrigado