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

Xử lý ngoại lệ trong Thủ tục với các hàm lồng nhau trong pl / sql

RAISE_APPLICATION_ERROR thủ tục có tham số thứ ba kiểm soát xem ngoại lệ thay thế ngăn xếp ngoại lệ hiện tại (hành vi mặc định) hay thêm vào nó.

Vì vậy, nếu bạn vượt qua nó TRUE nó sẽ hiển thị cả hai thông báo; trong cuộc gọi từ thủ tục của bạn:

...
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR (-20101, 'Problem in loading Affected Circle data',
  TRUE);
END;

cung cấp cho bạn đầu ra:

BEGIN
*
ERROR at line 1:
ORA-20101: Problem in loading Affected Circle data
ORA-06512: at "SRUSER.ADD_AFFECTEDCIRCLE", line 13
ORA-20102: Circle Code is wrong or not available
ORA-06512: at line 2

Để chỉ hiển thị các thông báo chứ không phải thông tin ngăn xếp khác, bạn cần thao tác với ngăn xếp. Bài viết này đề cập đến cách sử dụng format_error_backtrace để trích xuất thông tin bạn quan tâm, nhưng tiếc là liên kết đến BT gói đã chết. Một số điểm giống nhau được đề cập ở đây . Về cơ bản, bạn cần phải phân tích cú pháp chuỗi ngoại lệ thành các dòng và chỉ hiển thị những chuỗi bắt đầu bằng ORA-20% , Tôi nghĩ.

Nhưng hãy cẩn thận về việc mất thông tin thực sự có thể quan trọng. Đặc biệt, tôi khuyên bạn chỉ nên mắc các lỗi cụ thể mà bạn đang tìm kiếm, chứ không phải KHÁC - hãy để điều đó một mình để bạn có thể đối phó với các lỗi không mong muốn và không che giấu điều gì đó quan trọng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dịch vụ cơ sở dữ liệu trên AWS và Nền tảng đám mây Oracle

  2. Sql:chênh lệch giữa hai ngày

  3. Xóa các số 0 ở đầu khỏi nhà phát triển varchar sql

  4. Tìm số ký tự và số trong một chuỗi

  5. MySQL COALESCE và Hàm NULLIF