SQLERRMファンクションは、エラー・コードに関連付けられているエラー・メッセージを戻します。
|
注意: エラー・メッセージの言語は、NLS_LANGUAGEパラメータによって決まります。このパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。 |
SQL文では、SQLERRMを起動できません。
ファンクションによってSQLERRMが起動され、そのファンクションの純正度を示すためにRESTRICT_REFERENCESプラグマを使用する場合、WNPSおよびRNPS制約は指定できません。
|
注意: FORALL文をSAVE EXCEPTIONS句とともに使用しないかぎり、SQLERRMよりDBMS_UTILITY.FORMAT_ERROR_STACKを使用することをお薦めします。詳細は、「エラー・コードとエラー・メッセージの取得」を参照してください。 |
ここでのトピック
セマンティクス
error_code
Oracle Databaseエラー・コードの値を持つ式。Oracle Databaseエラー・コードのリストは、『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