SQL 解説書

SIGNAL ステートメント

SIGNAL ステートメントは、エラーまたは警告条件を通知するのに使用します。 これを使用すると、指定した SQLSTATE と任意選択のメッセージ・テキストが、 エラーまたは警告とともに戻されます。

構文

                         .-VALUE-.
>>-SIGNAL----+-SQLSTATE--+-------+--sqlstate-string-constant--+->
             '-condition-name---------------------------------'
 
>-----+---------------------------------------------------------+-><
      '-SET--MESSAGE_TEXT-- = --+-variable-name--------------+--'
                                '-diagnostic-string-constant-'
 

説明

SQLSTATE VALUE sqlstate-string-constant
ここで指定したストリング定数は SQLSTATE を表します。 この定数は、正確に 5 文字の文字ストリング定数でなければならず、 SQLSTATE の規則に従っていなければなりません。

SQLSTATE がこれらの規則に従っていない場合には、エラーになります (SQLSTATE 428B3)。

condition-name
条件の名前を指定します。 条件名はプロシージャー内で固有でなければならず、参照できるのは、 その条件名が宣言されている複合ステートメントの中だけです。

SET MESSAGE_TEXT=
エラーまたは警告を記述するストリングを指定します。 このストリングは SQLCA の SQLERRMC フィールドに戻されます。 実際のストリングが 70 バイトを超える場合、警告が出されずに切り捨てられます。 この文節を指定する場合、 SQLSTATE または condition-name も指定しなければなりません (SQLSTATE 42601)。

variable-name
複合ステートメント内で宣言しなければならない SQL 変数を識別します。 この SQL 変数は、CHAR または VARCHAR データ・タイプとして定義しなければなりません。

diagnostic-string-constant
メッセージ・テキストを含んでいる文字ストリング定数を指定します。

顧客番号をアプリケーションが認識しない場合に、 そのアプリケーション・エラーを通知する受注システムの 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


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]