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' 値はエラー状況ではなく成功を表すためです。
エラーコードと SQLSTATE 値の詳細については、《OceanBaseデータベースシステムリファレンス》エラーコード(MySQLモード)を参照してください。
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;