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.