Problema para logar erros de insert - Exception

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
omatheus
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sex, 02 Dez 2011 10:02 am

Boa tarde,

Tenho um insert com select e preciso colocar uma exception onde vou gravar em uma tabela de log os campos da chave da tabela inserida.

ex:

Selecionar tudo

begin
   insert into tab01 
   select campo01, campo02, campo03 from tab02x where ....
exception
   when others then
     insert into tab_log (erro,desc) values ('Erro01',campo1 || campo2 || campo3);
     commit;
end;
*** Só que quando executo dá erro porque as variaveis do insert são do select acima, tentei colocar select into acima mas não dá e não posso passar a rotina para cursor, para logar as variaveis do cursor.

Existe alguma outra forma de gravar os campos do select do primeiro insert?
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 319
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Olá,

Não sei se é isso que você precisa, mas... Você pode utilizar triggers no evento AFTER INSERT. Não se aplica no seu caso?

Att.,
alexandre haritos
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Qua, 24 Out 2012 9:31 am

Solução simples !

Abra um cursor e co os dados que o cursor retornou você faz o insert em sua tabela. Exemplo:

Selecionar tudo

declare
  cussor c1 is
  select *
  from my_table;
  d1 c1%rowtype;
begin
  open c1;
  loop
     fetch c1 into d1;
     exit when c1%notfound;
     insert into outra_tabela values(d1.campo1, d1.campo2....);
   end loop;
   exception when others then
        insert into SEU_LOG values(d1.campo1, d1.campo2....)
end;
Responder
  • Informação
  • Quem está online

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