Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle PL/SQL:Trigger-Spalten dynamisch durchlaufen

Nein, Sie können nicht dynamisch auf :old- und :new-Werte verweisen. Wie Shane vorschlägt, können Sie Code schreiben, um den statischen Triggercode zu generieren, wenn das das Leben einfacher macht. Außerdem können Sie "hier etwas tun" zu einer Paketprozedur machen, sodass Ihr Auslöser wird:

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;

(Die sinnlose REFERENCING-Klausel können Sie übrigens weglassen).