martinbulinski.de

Welches Statement hat den Trigger ausgelöst Drucken E-Mail
  
Donnerstag, 13. November 2008 um 15:51

Manchmal möchte man lediglich protokollieren, durch welches Statement ein Trigger ausgelöst wurde. Ein Weg ist die Funktion ora_sql_text.

 

Die Funktion ora_sql_text füllt eine PL/SQL-Tabelle vom Typ ora_name_list_t. Dieser Datentyp existiert seit ORACLE 9i. Eine entsprechende Variable muss beim Aufruf übergeben werden.
In dieser Tabelle steht das auslösende SQL-Statement.
Der Rückgabewert der Funktion ist numerisch und enthält die Anzahl gefüllter Zeilen der PL/SQL-Tabelle.

Um mit einem Trigger zu protokollieren, welches das auslösende Statement war, könnte folgender Trigger-Rumpf verwendet werden:

create or replace trigger track_stmt 
before create on schema
for each row
declare
  n number;
  sql_text ora_name_list_t; 
  stmt VARCHAR2(2000); 
begin 
  n := ora_sql_txt(sql_text); 
  FOR i IN 1..n LOOP 
     stmt := stmt || sql_text(i); 
  END LOOP; 
  INSERT INTO event_table ('text of triggering statement: ' || stmt); 
end;
 
Benutzerbewertung: / 0
SchwachPerfekt 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Anmeldung



Wer ist online

Wir haben 5 Gäste online