ERRO - ORA-06159

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
elciodba
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 76
Registrado em: Sex, 31 Out 2008 4:30 pm
Localização: belo horizonte-mg

Bom dia estou com problema em uma trigger. Erro ORA-06159 porem essa trigger é igual a uma outra que já funciona. já olhamos tudo e não tem diferencia nenhuma da que funciona.
Estou precisando de ajuda.

Obrigado

Selecionar tudo

Oracle Database 10g Release 10.2.0.4.0 - Production
PL/SQL Release 10.2.0.4.0 - Production
CORE	10.2.0.4.0	Production
TNS for 32-bit Windows: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Qual a descrição deste erro?
Qual a funcionalidade da trigger??
elciodba
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 76
Registrado em: Sex, 31 Out 2008 4:30 pm
Localização: belo horizonte-mg

Selecionar tudo

ORA-06519:
transação autônoma ativa detectada e revertida
Causa: Antes de retornar a partir de um bloco PL / SQL autônomo, todas as operações autônomas começou dentro do bloco deve ser concluída (seja confirmada ou revertida). Se não, a transação autônoma ativo é implicitamente revertida e este erro é gerado.
Ação: Certifique-se de que, antes de voltar a partir de um bloco PL / SQL autônomo, quaisquer transações autônomos ativos são explicitamente confirmada ou revertida.

Sempre que insere na tabela ela atualiza outra tabela
Trigger abaixo:

Selecionar tudo

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; 
                      
                      v_debug := utl_http.request('http://multi02/multicredito/debug/teste.php?data=TRUE');                      
                   exception when others then
                      --rollback;
                      v_debug := utl_http.request('http://multi02/multicredito/debug/teste.php?data=:' || replace(sqlerrm, ' ', '_'));
                   end;
                end loop;
                close cur_dados_compart;
        end if;
     END IF;
   end if;    

end TRG_COMPART_TRAB_REFER;
wmendes.miranda
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 11
Registrado em: Qui, 26 Ago 2010 10:51 am
Localização: São Paulo
Contato:
Quer aprender PL/SQL de graça? acesse http://aprendaplsql.com/ /*EM CONTRUÇÃO*/

Oi elciodba, tudo bem?

Faltou o commit e/ou o rollback (ele existe mas está comentado). Quando se usa Autonomous_Transaction deve-se commitar ou dar um rollback antes do final da transação. Se o problema persistir só falar para eu dar uma analisada melhor.

abs
William Miranda
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes