Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle PL/SQL:Loop Over Trigger Columns Dinamicamente


Não, você não pode referenciar valores :old e :new dinamicamente. Como sugere Shane, você pode escrever código para gerar o código de gatilho estático, se isso facilitar a vida. Além disso, você pode fazer "faça algo aqui" em um procedimento de pacote para que seu gatilho se torne:
CREATE OR REPLACE TRIGGER JOSH.TEST#UPD BEFORE 
UPDATE ON JOSH.TEST_TRIGGER_TABLE
begin    
   my_package.do_something_with (:old.col1, :new.col1);
   my_package.do_something_with (:old.col2, :new.col2);
   my_package.do_something_with (:old.col3, :new.col3);
   -- etc.
end;

(Você pode abandonar a cláusula REFERENCEN inútil a propósito).