Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Ghi nhật ký thông báo lỗi trong quy trình được lưu trữ của Oracle

Nếu bạn quyết định ghi nhật ký của riêng mình và đăng nhập vào một bảng, bạn có thể chuyển sang mục Giao dịch tự động tuyến đường.

Giao dịch tự trị là giao dịch có thể được cam kết độc lập với giao dịch hiện tại mà bạn đang thực hiện.

Bằng cách đó, bạn có thể đăng nhập và cam kết tất cả thông tin bạn muốn vào bảng nhật ký của mình một cách độc lập với sự thành công hay thất bại của quy trình đã lưu trữ của bạn hoặc giao dịch gốc của quy trình hàng loạt.

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;
/

Sau đó, nếu bạn gọi nó như thế này, bạn vẫn có thể nhận được thông báo được cam kết vào bảng nhật ký của mình ngay cả khi bạn gặp lỗi và khôi phục giao dịch của mình:

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;
/

Bạn có thể muốn dọn dẹp nó bằng các ngoại lệ có ý nghĩa đối với mã của bạn, nhưng đó là ý tưởng chung, dữ liệu được ghi trong các lệnh gọi tới SP_LOG vẫn tồn tại, nhưng giao dịch mẹ vẫn có thể được khôi phục lại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay thế một phần của gói Oracle

  2. Trong WiX, làm cách nào để kiểm tra sự tồn tại của khóa đăng ký (không phải giá trị) cho Oracle ODP.Net

  3. cách chuyển kết nối do người dùng tạo sang chế độ ngủ đông

  4. Tạo và chèn CLOB lớn (1 MB) bằng SQL * Plus

  5. Cách đặt hàng theo ASC hoặc DESC không phân biệt chữ hoa chữ thường, với DISTINCT và UNION