SQLからはアクセスできませんが、PL / SQL内では、SQLERRM
を使用できます。 機能。
例
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.
もちろん、ora_code_desc
を作成することもできます。 文字列を受け取り、最初の3文字を削除し、結果の数値をSQLERRM
に渡した関数 、結果を返しました
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は、Unixプラットフォームにもユーティリティを出荷しています oerr それはより詳細を提供します-特にあなたが探している原因と行動。そのデータも本当に必要な場合は、オペレーティングシステムシェルを呼び出してoerr
を実行するJavaストアドプロシージャを作成できます。 コマンドを実行し、結果を返しました。これにより、より多くのデータが得られますが、明らかに、はるかに複雑になります。