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

Truy vấn Oracle để biết chi tiết lỗi mã ORA

Nó không thể truy cập được từ SQL nhưng trong PL / SQL, bạn có thể sử dụng SQLERRM chức năng.

Ví dụ

SQL> ed
Wrote file afiedt.buf

  1  begin
  2    dbms_output.put_line( sqlerrm(0) );
  3    dbms_output.put_line( sqlerrm(-1041) );
  4* end;
SQL> /
ORA-0000: normal, successful completion
ORA-01041: internal error. hostdef extension doesn't exist

PL/SQL procedure successfully completed.

Tất nhiên, bạn có thể tạo một ora_code_desc hàm nhận vào một chuỗi, loại bỏ ba ký tự đầu tiên, chuyển số kết quả cho SQLERRM và trả về kết quả

SQL> ed
Wrote file afiedt.buf

  1  create or replace function ora_code_desc( p_code in varchar2 )
  2    return varchar2
  3  is
  4    l_str varchar2(1000);
  5  begin
  6    l_str := sqlerrm( substr(p_code, 4 ) );
  7    return l_str;
  8* end;
SQL> /

Function created.

SQL> select ora_code_desc( 'ORA-00000' ) from dual;

ORA_CODE_DESC('ORA-00000')
--------------------------------------------------------------------------------
ORA-0000: normal, successful completion

Oracle cũng cung cấp một tiện ích trên nền tảng Unix oerr cung cấp thêm thông tin chi tiết - đặc biệt là nguyên nhân và hành động bạn đang tìm kiếm. Nếu bạn cũng thực sự muốn dữ liệu đó, bạn có thể viết một thủ tục được lưu trữ Java gọi ra một trình bao hệ điều hành, thực thi một oerr và trả về kết quả. Điều đó sẽ cung cấp cho bạn nhiều dữ liệu hơn nhưng rõ ràng sẽ phức tạp hơn nhiều.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể tải DLL “OraOps10.dll”

  2. Sử dụng DBMS_LOB.SUBSTR trên BLOB dẫn đến ORA-06502

  3. Tại sao tôi gặp lỗi khi cố gắng đổi tên bảng sau FROM?

  4. Cần sắp xếp tên nhân viên theo cột thành phố của họ một cách khôn ngoan

  5. Cách cập nhật cột BLOB, lỗi ORA-00932, trong khi Chèn hoạt động