Trigger - Colocar registros :NEW em um TYPE

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
einstein18
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Qui, 24 Jan 2008 7:16 am
Localização: SP

Olá amigos do fórum, tudo bem? Preciso de uma ajudinha de vocês..

Tenho uma trigger after update or insert em uma tabela e estou querendo passar todos os campos dessa tabela para uma procedure que tenho. Para não ter que passar todos os campos um a um, eu criei um TYPE para poder passar apenas o registro completo, veja a seguir:

Selecionar tudo

 type t_fatnot is table of fatnot%rowtype index by binary_integer;
 tfatnot t_fatnot;
Preciso armazenar nessa variável tfatnot todos os campos da tabela, ou seja, todos os :NEW da vida. Tenho uns 50 campos +-. Pensei em dar um select na propria tabela, mas ai vai acarretar em uma trigger mutante.

A pergunta é: Como posso alimentar minha variável tfatnot com todos os campos da tabela (:new.*)?

Obrigado,

Renato
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

einstein18,

Estou respondendo este tópico antigo em aberto, para o caso de outros foristas se depararem com a mesma dúvida.

Entendo que para o seu caso você poderia usar packages para armazenar as informações ":NEW" de sua trigger, sem cair no problema de "MUTATING TABLES".

Veja se estes exemplos do Tom Kyte (ASKTOM) ajudam você:

https://asktom.oracle.com/pls/asktom/AS ... 9097816936

Fora isso, existem novos recursos da linguagem SQL do ORACLE (a partir do 10g) que talvez pudessem tornar esta atividade mais fácil.

Pesquise por "RETURNING INTO" que pode ser usado em comandos INSERT,DELETE,UPDATE,EXECUTE IMMEDIATE. Um ponto de partida seria o link abaixo:

http://docs.oracle.com/cd/B19306_01/app ... clause.htm

Abraços,

Sergio Coutinho
Responder
  • Informação
  • Quem está online

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