Recherche…


Remarques

Les cas d'utilisation typiques pour une transaction autonome sont.

  1. Pour créer tout type de structure de journalisation, comme la structure de journalisation des erreurs expliquée dans l'exemple ci-dessus.
  2. Pour l'audit des opérations DML dans des déclencheurs sur des tables, quel que soit le statut final de la transaction (COMMIT ou ROLLBACK).

Utilisation d'une transaction autonome pour les erreurs de journalisation

La procédure suivante est une procédure générique qui sera utilisée pour consigner toutes les erreurs dans une application dans un tableau de journal des erreurs commun.

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;

Le bloc PLSQL anonyme suivant montre comment appeler la procédure log_errors.

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow