Ricerca…


Osservazioni

I casi d'uso tipici per le transazioni autonome sono.

  1. Per costruire qualsiasi tipo di framework di registrazione come il framework di registrazione degli errori spiegato nell'esempio precedente.
  2. Per il controllo delle operazioni DML nei trigger su tabelle indipendentemente dallo stato finale della transazione (COMMIT o ROLLBACK).

Utilizzo della transazione autonoma per errori di registrazione

La seguente procedura è generica che verrà utilizzata per registrare tutti gli errori in un'applicazione in una tabella di log degli errori comune.

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;

Il seguente blocco PLSQL anonimo mostra come chiamare la procedura 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow