MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む

このページは機械翻訳したものです。

13.6.7.1 DECLARE ... CONDITION ステートメント

DECLARE 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 は、条件名に関連付ける特定の条件または条件のクラスを示します。 次の形式を使用できます:

SIGNAL で参照されるか、または RESIGNAL ステートメントで使用される条件名は MySQL エラーコードではなく、SQLSTATE 値に関連付けられている必要があります。

条件に名前を使用すると、ストアドプログラムのコードの明確化に役立つ場合があります。 たとえば、このハンドラは存在しないテーブルの削除の試行に適用されますが、1051 が不明なテーブルの MySQL エラーコードであることがわかっている場合にのみわかります:

DECLARE CONTINUE HANDLER FOR 1051
  BEGIN
    -- body of handler
  END;

条件の名前を宣言することによって、このハンドラの目的がより簡単にわかるようになります。

DECLARE no_such_table CONDITION FOR 1051;
DECLARE CONTINUE HANDLER FOR no_such_table
  BEGIN
    -- body of handler
  END;

これは、同じ条件の、MySQL エラーコードではなく、対応する SQLSTATE 値に基づく名前付き条件です。

DECLARE no_such_table CONDITION FOR SQLSTATE '42S02';
DECLARE CONTINUE HANDLER FOR no_such_table
  BEGIN
    -- body of handler
  END;