Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Catat pesan kesalahan dalam prosedur tersimpan Oracle

Jika Anda memutuskan untuk menggulung log Anda sendiri dan masuk ke tabel, Anda dapat membuka Transaksi Otonom rute.

Transaksi Otonom adalah transaksi yang dapat dilakukan secara independen dari transaksi saat ini yang Anda lakukan.

Dengan cara itu Anda dapat mencatat dan memasukkan semua info yang Anda inginkan ke tabel log Anda terlepas dari keberhasilan atau kegagalan prosedur tersimpan atau transaksi induk proses batch.

CREATE OR REPLACE PROCEDURE "SP_LOG" (
    P_MESSAGE_TEXT VARCHAR2
) IS
  pragma autonomous_transaction;
BEGIN

    DBMS_OUTPUT.PUT_LINE(P_MESSAGE_TEXT);

    INSERT INTO PROCESSING_LOG (
        MESSAGE_DATE,
        MESSAGE_TEXT
    ) VALUES (
        SYSDATE,
        P_MESSAGE_TEXT
    );
    COMMIT;

END;
/

Kemudian jika Anda menyebutnya seperti ini, Anda masih bisa mendapatkan pesan yang dikomit ke tabel log Anda bahkan jika Anda mengalami kegagalan dan mengembalikan transaksi Anda:

BEGIN
  SP_LOG('Starting task 1 of 2');

  ... code for task 1 ...

  SP_LOG('Starting task 2 of 2');

  ... code for task 2 ...

  SP_LOG('Ending Tasks');

  ... determine success or failure of process and commit or rollback ... 

 ROLLBACK;
END;
/

Anda mungkin ingin merapikannya dengan pengecualian yang masuk akal untuk kode Anda, tetapi itu adalah ide umum, data yang tertulis dalam panggilan ke SP_LOG tetap ada, tetapi transaksi induk masih dapat dibatalkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada cara, di ORACLE, untuk menggabungkan beberapa baris baris menjadi satu, menggunakan dua tabel, di mana nilai akhir dipisahkan dengan koma?

  2. SQL Semua Kemungkinan Kombinasi Round Robin antara dua Tabel

  3. Tidak dapat menonaktifkan perlindungan status sesi di Oracle APEX 18.1.0.00.45 untuk Tindakan Dinamis yang memperbarui Item Halaman

  4. menghubungkan oracle dari r

  5. Melewati daftar yang ditentukan pengguna dari hibernasi ke prosedur tersimpan Oracle