sql >> Base de Datos >  >> RDS >> Oracle

Oracle PL/SQL:Loop Over Trigger Columns Dynamicly

No, no puede hacer referencia a los valores :antiguo y :nuevo de forma dinámica. Como sugiere Shane, puede escribir código para generar el código activador estático, si eso le facilita la vida. Además, puede hacer que "haga algo aquí" en un procedimiento de paquete para que su activador se convierta en:

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;

(Por cierto, puede deshacerse de la cláusula de REFERENCIA sin sentido).