SIGNAL ステートメントは、エラーまたは警告条件を通知するのに使用します。 これを使用すると、指定した SQLSTATE と任意選択のメッセージ・テキストが、 エラーまたは警告とともに戻されます。
構文
.-VALUE-. >>-SIGNAL----+-SQLSTATE--+-------+--sqlstate-string-constant--+-> '-condition-name---------------------------------' >-----+---------------------------------------------------------+->< '-SET--MESSAGE_TEXT-- = --+-variable-name--------------+--' '-diagnostic-string-constant-'
説明
SQLSTATE がこれらの規則に従っていない場合には、エラーになります (SQLSTATE 428B3)。
注
+438 (SQLSTATE が '01' または '02' で始まる場合)
-438 (それ以外の場合)
SIGNAL ステートメントでは、有効な SQLSTATE 値を使用することができます。 ただし、プログラマーはアプリケーション用に予約されている範囲に基づいて、 新しい SQLSTATE を定義するようにお勧めします。 これにより、 将来のリリースでデータベース・マネージャーによって定義されるかもしれない SQLSTATE 値を、 意図せずに使用してしまうことを避けられます。
例
顧客番号をアプリケーションが認識しない場合に、 そのアプリケーション・エラーを通知する受注システムの SQL プロシージャー。 ORDERS 表には CUSTOMER 表に対する外部キーが含まれています。 ただし、受注を挿入する前に CUSTNO が存在していなければなりません。
CREATE PROCEDURE SUBMIT_ORDER (IN ONUM INTEGER, IN CNUM INTEGER, IN PNUM INTEGER, IN QNUM INTEGER) SPECIFIC SUBMIT_ORDER MODIFIES SQL DATA LANGUAGE SQL BEGIN DECLARE EXIT HANDLER FOR SQLSTATE VALUE '23503' SIGNAL SQLSTATE '75002' SET MESSAGE_TEXT = 'Customer number is not known'; INSERT INTO ORDERS (ORDERNO, CUSTNO, PARTNO, QUANTITY) VALUES (ONUM, CNUM, PNUM, QNUM); END