REPEAT (Snowflakeスクリプト)¶
REPEAT
ループは、指定された条件がtrueになるまで反復されます。 REPEAT
ループは、ループの最後で条件をテストします。これは、 REPEAT
ループの本文が常に少なくとも1回実行されることを意味します。
ループの詳細については、 ループの操作 をご参照ください。
注釈
この Snowflakeスクリプト 構造は、 Snowflakeスクリプトブロック 内でのみ有効です。
構文¶
REPEAT
<statement>;
[ <statement>; ... ]
UNTIL ( <condition> )
END REPEAT [ <label> ] ;
条件:
使用上の注意¶
REPEAT
の条件を括弧で囲みます。例:REPEAT ( <条件> )
。condition
が TRUE と評価されず、ループに BREAK コマンド(または同等のもの)が含まれていない場合、ループは実行され、クレジットを無期限に消費します。condition
が NULL の場合は、 FALSE として扱われます。ループには複数のステートメントを含めることができます。これらのステートメントを含めるために BEGIN ... END ブロック を使用できますが、必須ではありません。
例¶
この例では、ループを使用して2の累乗を計算します。(これは非効率的なソリューションですが、ループを示しています。)
CREATE PROCEDURE power_of_2()
RETURNS NUMBER(8, 0)
LANGUAGE SQL
AS
$$
DECLARE
counter NUMBER(8, 0); -- Loop counter.
power_of_2 NUMBER(8, 0); -- Stores the most recent power of 2 that we calculated.
BEGIN
counter := 1;
power_of_2 := 1;
REPEAT
power_of_2 := power_of_2 * 2;
counter := counter + 1;
UNTIL (counter > 8)
END REPEAT;
RETURN power_of_2;
END;
$$;
ストアドプロシージャを実行した結果は次のとおりです。
CALL power_of_2();
+------------+
| POWER_OF_2 |
|------------|
| 256 |
+------------+