Поиск…


замечания

Типичные варианты использования автономной транзакции.

  1. Для построения любой структуры ведения журнала, такой как структура регистрации ошибок, описанная в приведенном выше примере.
  2. Для аудита операций DML в триггерах на таблицах, независимо от конечного состояния транзакции (COMMIT или ROLLBACK).

Использование автономной транзакции для протоколирования ошибок

Следующая процедура является общей, которая будет использоваться для регистрации всех ошибок в приложении в общей таблице журнала ошибок.

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;

Следующий анонимный блок PLSQL показывает, как вызвать процедуру 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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow