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;