Suche…


Bemerkungen

Typische Anwendungsfälle für autonome Transaktionen sind.

  1. Für das Erstellen jeglicher Art von Protokollierungsframework, wie das im obigen Beispiel erläuterte Fehlerprotokollierungsframework.
  2. Für die Überwachung von DML-Vorgängen in Triggern in Tabellen, unabhängig vom endgültigen Status der Transaktion (COMMIT oder ROLLBACK).

Verwendung einer autonomen Transaktion zum Protokollieren von Fehlern

Das folgende Verfahren ist ein generisches Verfahren, mit dem alle Fehler in einer Anwendung in einer allgemeinen Fehlerprotokolltabelle protokolliert werden.

CREATE OR REPLACE PROCEDURE log_errors
(
  p_calling_program IN VARCHAR2,
  p_error_code IN INTEGER,
  p_error_description IN VARCHAR2
)
IS
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  INSERT INTO error_log
  VALUES
  (
  p_calling_program,
  p_error_code,
  p_error_description,
  SYSDATE,
  USER
  );
  COMMIT;
END log_errors;

Der folgende anonyme PLSQL-Block zeigt, wie die log_errors-Prozedur aufgerufen wird.

BEGIN
   DELETE FROM dept WHERE deptno = 10;
EXCEPTION
   WHEN OTHERS THEN
      log_errors('Delete dept',sqlcode, sqlerrm);
      RAISE;
END;

SELECT * FROM error_log;

CALLING_PROGRAM    ERROR_CODE    ERROR_DESCRIPTION                                                ERROR_DATETIME         DB_USER
Delete dept        -2292         ORA-02292: integrity constraint violated - child record found    08/09/2016             APEX_PUBLIC_USER


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow