Christian Seiler: Trigger in Prozedur erstellen

Beitrag lesen

Hallo,

hat jemand von euch eine Idee wie ich in einer PL/SQL-Prozedur einen Trigger erstellen kann? Ich suche eine Möglichkeit einen CREATE TRIGGER... in einer Prozedur abzusetzen.

Du kannst in einer Procedure keine DDL-Befehle ausführen, sondern nur DML-Befehle. Allerdings gibt's bei Oracle zumindest noch den Trick über EXECUTE IMMEDIATE.

Das sieht so aus, dass Du Dir den SQL-Befehl selbst zusammenbasteln musst als String und den dann an EXECUTE IMMEDIATE zur Ausführung übergeben kannst.

create or replace procedure test(trigger_name varchar2, table_name varchar2) as  
begin  
   EXECUTE IMMEDIATE 'CREATE OR REPLACE TRIGGER ' || trigger_name || ' BEFORE INSERT ON ' || table_name || ' FOR EACH ROW BEGIN ... END;';  
end test;

(oder so ähnlich)

Viele Grüße,
Christian