SQL 解説書

GET DIAGNOSTICS ステートメント

GET DIAGNOSTICS ステートメントは、直前に呼び出された SQL ステートメントに関する情報を入手します。

構文

>>-GET DIAGNOSTICS--SQL-variable-name--=----+-ROW_COUNT-----+--><
                                            '-RETURN_STATUS-'
 

説明

SQL-variable-name
割り当てのターゲットとなる変数を識別します。 この変数は整変数でなければなりません。 SQL 変数は複合ステートメントで定義できます。

ROW_COUNT
直前に呼びされた SQL ステートメントに関連する行数を識別します。 直前の SQL ステートメントが DELETE、INSERT、または UPDATE ステートメントの場合、 ROW_COUNT はそのステートメントによって、 それぞれ削除、挿入、または更新された行数を戻します。 その際に、トリガーまたは参照保全制約によって影響を受ける行は除外されます。 直前のステートメントが PREPARE ステートメントの場合、ROW_COUNT は、 準備済みステートメントの結果行の見積もり数を識別します。

RETURN_STATUS
直前に実行された SQL ステートメントが、 状況を戻すプロシージャーを呼び出す CALL ステートメントの場合に、 そのステートメントに関連するストアード・プロシージャーから戻される状況値を識別します。 直前のステートメントがそのようなステートメントでなければ、 戻される値は特に意味のない、何らかの整数です。

規則

SQL プロシージャーで GET DIAGNOSTICS ステートメントを実行し、更新された行数を判別します。

     CREATE PROCEDURE sqlprocg (IN deptnbr VARCHAR(3))
        LANGUAGE SQL 
        BEGIN
           DECLARE SQLSTATE CHAR(5);
           DECLARE rcount INTEGER;
           UPDATE CORPDATA.PROJECT
              SET PRSTAFF = PRSTAFF + 1.5
              WHERE DEPTNO = deptnbr;
           GET DIAGNOSTICS rcount = ROW_COUNT;
-- At this point, rcount contains the number of rows that were updated.
    ...
        END

SQL プロシージャー内で TRYIT というストアード・プロシージャーの呼び出しから戻される状況値を処理します。 この呼び出しでは、ユーザー障害を示す正の値が明示的に戻されるか、 あるいは SQL エラーが発生して負の戻り状況値が戻されます。 プロシージャーが成功すると、ゼロの値が戻されます。

   CREATE PROCEDURE TESTIT ()
     LANGUAGE SQL
     A1:BEGIN
        DECLARE RETVAL INTEGER DEFAULT 0;
        ...
        CALL TRYIT;
        GET DIAGNOSTICS RETVAL = RETURN_STATUS;
        IF RETVAL <> 0 THEN
           ...
           LEAVE A1;
        ELSE
           ...
        END IF;
     END A1


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