プライマリ・コンテンツに移動
Oracle Database PL/SQL言語リファレンス
12c リリース1 (12.1)
B71296-06
目次へ移動
目次
索引へ移動
索引

前
次

SQLERRMファンクション

SQLERRMファンクションは、エラー・コードに関連付けられているエラー・メッセージを戻します。

注意:

エラー・メッセージの言語は、NLS_LANGUAGEパラメータによって決まります。このパラメータの詳細は、『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。

SQL文では、SQLERRMを起動できません。

ファンクションによってSQLERRMが起動され、そのファンクションの純正度を示すためにRESTRICT_REFERENCESプラグマを使用する場合、WNPSおよびRNPS制約は指定できません。

注意:

FORALL文をSAVE EXCEPTIONS句とともに使用しないかぎり、SQLERRMよりDBMS_UTILITY.FORMAT_ERROR_STACKを使用することをお薦めします。詳細は、「エラー・コードとエラー・メッセージの取得」を参照してください。

ここでのトピック

構文

セマンティクス

sqlerrm_function

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

  • 例11-23SQLCODEおよびSQLERRM値の表示

  • 例12-13FORALL文が完了した後のFORALL例外の処理

  • 例12-13FORALL文が完了した後のFORALL例外の処理

関連トピック

この章:

他の章:

関連項目:

Oracle Databaseエラー・メッセージおよびそれらに関する情報のリストは、Oracle Databaseエラー・メッセージ・リファレンスを参照してください。