SQLERRMファンクションは、エラー番号に関連付けられているエラー・メッセージを戻します。
SQLERRMは、SQL文の中で直接使用することができません。 まず、SQLERRMの値をローカル変数に代入します。
RESTRICT_REFERENCESプラグマを使用してその純正度を示すときにファンクションによってSQLERRMが起動される場合、WNPSおよびRNPS制約は指定できません。
|
注意: FORALL文をSAVE EXCEPTIONS句とともに使用する場合以外は、SQLERRMよりDBMS_UTILTY.FORMAT_ERROR_STACKを使用することをお薦めします。 詳細は、「エラー・コードとエラー・メッセージの取得」を参照してください。 |
構文
sqlerrm_function ::=

キーワードとパラメータの説明
error_number
Oracle Databaseエラー番号の値を持つ式です。 Oracle Databaseエラー番号のリストは、『Oracle Databaseエラー・メッセージ』を参照してください。
デフォルトのエラー番号は、SQLCODEの現在の値に関連付けられています。 SQLCODEと同様に、error_numberのないSQLERRMは、例外ハンドラ内でのみ有効です。 例外ハンドラの外側、またはerror_numberの値が0(ゼロ)の場合、SQLERRMはORA-0000を戻します。
error_numberの値が+100の場合、SQLERRMはORA-01403を戻します。
error_numberの値が+100以外の正の数値の場合、SQLERRMは次のメッセージを戻します。
-error_number: non-ORACLE exception
error_numberの値が負の数値で、その絶対値がOracle Databaseエラー番号の場合、SQLERRMは、そのエラー番号に関連付けられているエラー・メッセージを戻します。 次に例を示します。
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('SQLERRM(-6511): ' || TO_CHAR(SQLERRM(-6511)));
3 END;
4 /
SQLERRM(-6511): ORA-06511: PL/SQL: cursor already open
PL/SQL procedure successfully completed.
SQL>
error_numberの値が負の数値で、その絶対値がOracle Databaseエラー番号ではない場合、SQLERRMは次のメッセージを戻します。
ORA-error_number: Message error_number not found; product=RDBMS; facility=ORA
次に例を示します。
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('SQLERRM(-50000): ' || TO_CHAR(SQLERRM(-50000)));
3 END;
4 /
SQLERRM(-50000): ORA-50000: Message 50000 not found; product=RDBMS;
facility=ORA
PL/SQL procedure successfully completed.
SQL>
関連トピック
|
参照: Oracle Databaseエラー・メッセージおよびそれらに関する情報のリストは、『Oracle Databaseエラー・メッセージ』を参照してください。 |