Atribuir registro old em um rowtype em uma trigger

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Pablo
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 190
Registrado em: Sex, 27 Out 2006 11:12 am
Localização: 88350000
Pablo

Boa tarde turma.
tenho uma trigger em uma tabela com 80 colunas...eu preciso fazer uma série de checagens que vão ser feitas em uma procedure...bom, gostaria saber se é possível colocar toda a linha nova (ou antiga) em uma única variável... hoje estou chamando coluna por coluna na procedure...então, no fim das contas dá 160 parâmetros na minha procedure (itens do new e old )...c fosse possível resumir em 2 parâmetros seria interessante.

Alguém tem alguma idéia??

não sei se fui claro.

Abraços
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Cara,
não sei como fazer isso de forma simples, de pegar um record ou objeto da linha ativa da trigger.
Não é a solução ideal mas pode melhorar seus 160 parâmetros para 2.
Em vez de passar campo a campo NEW e OLD por parametro. Copia todos OLD para um record ou objeto e os NEW para outro.
Tua procedure/function recebe esses tipos como argumentos.
Tipo

Selecionar tudo

....
Procedure trigger_chama(:OLD.campo1,:OLD.campo2,..:OLD.campo80,:NEW.campo1,:NEW.campo2,...,:NEW.campo80)
...
para:

Selecionar tudo

.....
old_type(campo1) := :OLD.campo1
old_type(campo2) := :OLD.campo2
.....
Procedure trigger_chama(old_type, new_type)
....
Na falta de opção isso melhora na manutenção.
Pablo
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 190
Registrado em: Sex, 27 Out 2006 11:12 am
Localização: 88350000
Pablo

Opa...beleza..eu tinha feito dessa forma também...mas, ficar atribuindo todos os itens em um rowtype e trabalhoso d+... mas, c não tem solução...vamos nessa...heheh..

Obrigado pela ajuda brother.
Responder
  • Informação