条件ハンドラーは、SQLSTATEベースまたは汎用になるか、ユーザー定義の条件に関連付けられるかのどちらかです。
SQLSTATEベースの条件ハンドラー
ストアド プロシージャ内のSQL文の実行は、一定の完了、例外、および警告条件になります。こうした条件はSQLSTATE文変数にポストされます。条件ハンドラーを宣言し、それを1つ以上のSQLSTATE値に関連付けることができます。ストアド プロシージャの実行中に、指定したSQLSTATE値によって表わされる条件が発生すると、条件ハンドラーがそのアクションを実行します。
一般条件と汎用条件ハンドラー
一般条件は、キーワードSQLEXCEPTION、SQLWARNING、またはNOT FOUNDで表わされます。条件ハンドラーを宣言し、それを特定のSQLSTATE値ではなく、1つ以上の一般条件に関連付けることができます。ストアド プロシージャの実行中に、指定した一般条件が発生すると、条件ハンドラーがそのアクションを実行します。
条件名の条件ハンドラー
SQLSTATEは、5文字の文字列値です。ニーモニック(略号)名を宣言してそれをSQLSTATE値に関連付けると、そのSQLSTATE値がどのような条件を表わすのかを覚えやすくなります。条件ハンドラーを宣言し、それを1つ以上の条件名に関連付けることができます。ストアド プロシージャの実行中に、条件名または指定したSQLSTATE値によって識別される条件が発生すると、条件ハンドラーがそのアクションを実行します。
ユーザー定義条件とハンドラー
条件名を宣言してもSQLSTATE値とは関連付けない方法で、カスタム条件を定義することができます。これは、条件が自分のニーズに合わないSQLSTATE値で表わされる場合に便利です。条件ハンドラーを宣言し、それを1つ以上のユーザー定義条件に関連付けることができます。ストアド プロシージャの実行中に、ユーザー定義条件が発生すると、条件ハンドラーがそのアクションを実行します。SIGNAL文を使用すると、明示的にユーザー定義条件を発生させることができます。
関連情報
- ストアド プロシージャ内でSQL文を実行する場合は、DECLARE HANDLER(基本構文)を参照してください。
- 汎用条件ハンドラーの動作については、DECLARE HANDLER(SQLEXCEPTIONタイプ)、DECLARE HANDLER (SQLWARNINGタイプ)、およびDECLARE HANDLER (NOT FOUNDタイプ)を参照してください。
- 条件名の宣言については、DECLARE CONDITIONを参照してください。
- ユーザー定義の条件を宣言して条件ハンドラーに関連付ける場合は、DECLARE CONDITIONとDECLARE HANDLER(基本構文)を参照してください。
- SIGNAL文については、SIGNALを参照してください。