SQL 解説書

LOOP ステートメント

LOOP ステートメントは、ステートメント、またはステートメントのグループの実行を繰り返します。

構文

                        .-------------------------------.
                        V                               |
>>-+---------+--LOOP-------SQL-procedure-statement--;---+------->
   '-label:--'
 
>----END LOOP----+--------+------------------------------------><
                 '-label--'
 

説明

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

SQL-procedure-statement
ループ内で呼び出されるステートメントを指定します。

以下のプロシージャーでは、LOOP ステートメントを使用して、 employee 表から値を取り出します。 ループが繰り返されるたびに、OUT パラメーター counter が増加し、 v_midinit が検査されて、値が単一スペース (' ') でないことを確認します。 v_midinit が単一スペースの場合、 LEAVE ステートメントは制御のフローをループの外側に渡します。

     CREATE PROCEDURE LOOP_UNTIL_SPACE(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 c1 CURSOR FOR
              SELECT firstnme, midinit, lastname 
                FROM employee;
           DECLARE CONTINUE HANDLER FOR NOT FOUND
              SET counter = -1;
           OPEN c1;
          fetch_loop:
           LOOP
             FETCH c1 INTO v_firstnme, v_midinit, v_lastname;
              IF v_midinit = ' ' THEN
                 LEAVE fetch_loop;
     END IF;
              SET v_counter = v_counter + 1;
           END LOOP fetch_loop;
          SET counter = v_counter;
           CLOSE c1;
          END


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