SQL プロシージャーの REPEAT ステートメント

REPEAT ステートメントは、REPEAT ループの末尾で条件が真と評価されるまで実行される一連のステートメントを定義します。

ループの反復の完了ごとに、repeat-loop-condition が評価されます。

WHILE ステートメントでは、最初の受け渡しで while-loop-condition が偽の場合はループには入りません。 REPEAT ステートメントは、それに代わる便利なステートメントです。ただし、while-loop 論理を REPEAT ステートメントに書き直せることに注意する必要があります。

以下に、SQL プロシージャーで使用される REPEAT ステートメントの例を示してあります。

  CREATE PROCEDURE sum_mn2 (IN p_start INT
                           ,IN p_end INT
                           ,OUT p_sum INT)
  SPECIFIC sum_mn2
  LANGUAGE SQL
  smn2: BEGIN
  
    DECLARE v_temp INTEGER DEFAULT 0;
    DECLARE v_current INTEGER;

    SET v_current = p_start;

    REPEAT
      SET v_temp = v_temp + v_current;
      SET v_current = v_current + 1;
    UNTIL (v_current > p_end)
    END REPEAT;
  END