このページは機械翻訳したものです。
Press CTRL+C to copyDECLARE condition_name CONDITION FOR condition_value condition_value: { mysql_error_code | SQLSTATE [VALUE] sqlstate_value }
DECLARE ... CONDITION
ステートメントは名前付きエラー条件を宣言し、特定の処理が必要な条件に名前を関連付けます。 この名前は、以降の DECLARE ... HANDLER
ステートメントで参照できます (セクション13.6.7.2「DECLARE ... HANDLER ステートメント」を参照してください)。
条件宣言は、カーソルまたはハンドラ宣言の前に指定する必要があります。
condition_value
for DECLARE ... CONDITION
は、条件名に関連付ける特定の条件または条件のクラスを示します。 次の形式を使用できます:
-
mysql_error_code
: MySQL エラーコードを示す整数リテラル。MySQL エラーコード 0 はエラー条件ではなく成功を示すため、使用しないでください。 MySQL エラーコードのリストは、Server Error Message Reference を参照してください。
-
SQLSTATE [VALUE]
sqlstate_value
: SQLSTATE 値を示す 5 文字の文字列リテラル。'00'
で始まる SQLSTATE 値は、エラー条件ではなく成功を示すため、使用しないでください。 SQLSTATE 値のリストについては、Server Error Message Reference を参照してください。
SIGNAL
で参照されるか、または RESIGNAL
ステートメントで使用される条件名は MySQL エラーコードではなく、SQLSTATE 値に関連付けられている必要があります。
条件に名前を使用すると、ストアドプログラムのコードの明確化に役立つ場合があります。 たとえば、このハンドラは存在しないテーブルの削除の試行に適用されますが、1051 が「不明なテーブル」の MySQL エラーコードであることがわかっている場合にのみわかります:
Press CTRL+C to copyDECLARE CONTINUE HANDLER FOR 1051 BEGIN -- body of handler END;
条件の名前を宣言することによって、このハンドラの目的がより簡単にわかるようになります。
Press CTRL+C to copyDECLARE no_such_table CONDITION FOR 1051; DECLARE CONTINUE HANDLER FOR no_such_table BEGIN -- body of handler END;
これは、同じ条件の、MySQL エラーコードではなく、対応する SQLSTATE 値に基づく名前付き条件です。
Press CTRL+C to copyDECLARE no_such_table CONDITION FOR SQLSTATE '42S02'; DECLARE CONTINUE HANDLER FOR no_such_table BEGIN -- body of handler END;