SQL 解説書

REPEAT ステートメント

REPEAT ステートメントは、 検索条件が真になるまでステートメントまたはステートメントのグループを実行します。

構文

                          .-------------------------------.
                          V                               |
>>-+---------+--REPEAT-------SQL-procedure-statement--;---+----->
   '-label:--'
 
>----UNTIL--search-condition---END REPEAT----+--------+--------><
                                             '-label--'
 

説明

label
REPEAT ステートメントのラベルを指定します。 開始ラベルを指定した場合、 そのラベルを LEAVE および ITERATE ステートメントで指定することができます。 終了ラベルを指定する場合、一致する開始ラベルも指定しなければなりません。

SQL-procedure-statement
ループで実行する SQL ステートメントを指定します。

search-condition
SQL プロシージャー・ステートメントが実行される前に評価される条件を指定します。 条件が偽の場合、DB2 はループ内で SQL プロシージャー・ステートメントを実行します。

REPEAT ステートメントは、not_found 条件ハンドラーが呼び出されるまで、 表から行を取り出します。

     CREATE PROCEDURE REPEAT_STMT(OUT counter INTEGER)
        LANGUAGE SQL
        BEGIN
          DECLARE v_counter INTEGER DEFAULT 0;
          DECLARE v_firstnme VARCHAR(12);
          DECLARE v_midinit CHAR(1);
          DECLARE v_lastname VARCHAR(15);
          DECLARE at_end SMALLINT DEFAULT 0;
          DECLARE not_found CONDITION FOR SQLSTATE '02000';
          DECLARE c1 CURSOR FOR
             SELECT firstnme, midinit, lastname 
                FROM employee;
          DECLARE CONTINUE HANDLER FOR not_found
             SET at_end = 1;
           OPEN c1;
          fetch_loop:
          REPEAT
             FETCH c1 INTO v_firstnme, v_midinit, v_lastname;
              SET v_counter = v_counter + 1;
             UNTIL at_end > 0
          END REPEAT fetch_loop;
          SET counter = v_counter;
           CLOSE c1;
       END


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