Itu tidak dapat diakses dari SQL tetapi dalam PL/SQL, Anda dapat menggunakan SQLERRM
fungsi.
Misalnya
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.
Anda tentu saja dapat membuat ora_code_desc
fungsi yang mengambil string, menghapus tiga karakter pertama, meneruskan nomor yang dihasilkan ke SQLERRM
, dan mengembalikan hasilnya
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 juga mengirimkan utilitas pada platform Unix oerr yang memberikan lebih banyak detail-- terutama penyebab dan tindakan yang Anda cari. Jika Anda benar-benar menginginkan data itu juga, Anda dapat menulis prosedur tersimpan Java yang memanggil shell sistem operasi, menjalankan oerr
perintah, dan mengembalikan hasilnya. Itu akan memberi Anda lebih banyak data, tetapi jelas akan jauh lebih kompleks.