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エラー・メッセージ』を参照してください。 |