RESIGNAL ステートメントは、エラーまたは警告条件を再通知するのに使用します。 これを使用すると、指定した SQLSTATE と任意選択のメッセージ・テキストが、 エラーまたは警告とともに戻されます。
構文
>>-RESIGNAL----+----------------------------------------+------>< '-| signal-value |--+-----------------+--' '-| signal-info |-' signal-value .-VALUE-. |---+-SQLSTATE--+-------+--sqlstate-string-constant--+----------| '-condition-name---------------------------------' signal-info |---+---------------------------------------------------------+-| '-SET--MESSAGE_TEXT-- = --+-variable-name--------------+--' '-diagnostic-string-constant-'
説明
SQLSTATE がこれらの規則に従っていない場合には、エラーになります (SQLSTATE 428B3)。
注
+438 (SQLSTATE が '01' または '02' で始まる場合)
-438 (それ以外の場合)
オプションを指定せずに RESIGNAL ステートメントを発行すると、 SQLCODE にはハンドラーを呼び出した例外からの変更が行われません。
例
以下の例では、ゼロ除算によるエラーを検出します。 IF ステートメントは、 SIGNAL ステートメントを使用して overflow 条件ハンドラーを呼び出します。 その条件ハンドラーは、 RESIGNAL ステートメントを使用して別の SQLSTATE 値をクライアント・アプリケーションに戻します。
CREATE PROCEDURE divide ( IN numerator INTEGER IN denominator INTEGER OUT result INTEGER LANGUAGE SQL CONTAINS SQL BEGIN DECLARE overflow CONDITION FOR SQLSTATE '22003'; DECLARE CONTINUE HANDLER FOR overflow RESIGNAL SQLSTATE'22375' ; IF denominator = 0 THEN SIGNAL overflow; ELSE SET result = numerator / denominator; END IF; END