13.63 SQLERRMファンクション
SQLERRM
ファンクションは、エラー・コードに関連付けられているエラー・メッセージを戻します。
注意:
エラー・メッセージの言語は、NLS_LANGUAGE
パラメータによって決まります。このパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。
SQL文では、SQLERRM
を起動できません。
ファンクションによってSQLERRM
が起動され、そのファンクションの純正度を示すためにRESTRICT_REFERENCES
プラグマを使用する場合、WNPS
およびRNPS
制約は指定できません。
注意:
FORALL
文をSAVE
EXCEPTIONS
句とともに使用しないかぎり、SQLERRM
よりDBMS_UTILITY
.FORMAT_ERROR_STACK
を使用することをお薦めします。詳細は、「エラー・コードとエラー・メッセージの取得」を参照してください。
ここでのトピック
構文
sqlerrm_function ::=
セマンティクス
sqlerrm_function
error_code
Oracle Databaseエラー・コードの値を持つ式。
デフォルト: エラー・コードは、SQLCODE
の現在の値に関連付けられています。
SQLCODE
と同様に、error_code
のないSQLERRM
は、例外ハンドラ内でのみ有効です。例外ハンドラの外側、またはerror_code
の値が0(ゼロ)の場合、SQLERRM
はORA-0000を戻します。
error_code
の値が+100の場合、SQLERRM
はORA-01403を戻します。
error_code
の値が+100以外の正の数値の場合、SQLERRM
は次のメッセージを戻します。
-error_code: non-ORACLE exception
error_code
の値が負の数値で、その絶対値がOracle Databaseエラー・コードの場合、SQLERRM
は、そのエラー・コードに関連付けられているエラー・メッセージを戻します。次に例を示します。
BEGIN
DBMS_OUTPUT.PUT_LINE('SQLERRM(-6511): ' || TO_CHAR(SQLERRM(-6511)));
END;
/
結果:
SQLERRM(-6511): ORA-06511: PL/SQL: cursor already open
error_code
の値が負の数値で、その絶対値がOracle Databaseエラー・コードではない場合、SQLERRM
は次のメッセージを戻します。
ORA-error_code: Message error_code not found; product=RDBMS; facility=ORA
次に例を示します。
BEGIN DBMS_OUTPUT.PUT_LINE('SQLERRM(-50000): ' || TO_CHAR(SQLERRM(-50000))); END; /
結果:
SQLERRM(-50000): ORA-50000: Message 50000 not found; product=RDBMS; facility=ORA
関連トピック
この章:
他の章:
関連項目:
Oracle Databaseエラー・メッセージおよびそれらに関する情報のリストは、Oracle Databaseエラー・メッセージ・リファレンスを参照してください。