DECLARE ... CONDITION ステートメントは、例外条件を宣言し、名前を付け、その名前と例外条件が指定するハンドラーを関連付けるために使用されます。
例外条件の宣言は、カーソルまたはハンドラーの宣言よりも前に記述する必要があります。DECLARE ... CONDITION ステートメントの構文は次のとおりです:
DECLARE condition_name CONDITION FOR condition_value
condition_value: {
mysql_error_code
| SQLSTATE [VALUE] sqlstate_value
}
condition_name は、後の DECLARE ... HANDLER ステートメントで参照できます。
condition_value は、例外条件名に関連付けられる指定条件または条件カテゴリを示します。以下の形式を取ることができます:
mysql_error_code:エラーコードを表す整数リテラルです。コード0は成功を表し、エラーを表すものではないため、エラーコードに0を使用しないでください。SQLSTATE [VALUE] sqlstate_value:SQLSTATE値を表す5文字の文字列リテラルです。'00' で始まるSQLSTATE値は使用しないでください。'00' 値はエラー状況ではなく成功を表すためです。
SIGNAL 内または RESIGNAL ステートメントで使用される例外条件名は、エラーコードではなく SQLSTATE 値に関連付ける必要があります。
条件名を使用することで、格納されたプログラムコードをより明確にすることができます。mysql_error_code に基づく例外条件の例は以下のとおりです:
DECLARE unknown_column CONDITION FOR 5217;
DECLARE CONTINUE HANDLER FOR unknown_column
BEGIN
-- ハンドラー本体
END;
SQLSTATE 値に基づく例外条件の例は以下のとおりです:
DECLARE unknown_column CONDITION FOR SQLSTATE '42S22';
DECLARE CONTINUE HANDLER FOR unknown_column
BEGIN
-- ハンドラー本体
END;