REPEAT (Snowflakeスクリプト)

REPEAT ループは、指定された条件がtrueになるまで反復されます。 REPEAT ループは、ループの最後で条件をテストします。これは、 REPEAT ループの本文が常に少なくとも1回実行されることを意味します。

ループの詳細については、 ループの操作 をご参照ください。

注釈

この Snowflakeスクリプト 構造は、 Snowflakeスクリプトブロック 内でのみ有効です。

こちらもご参照ください:

BREAKCONTINUE

構文

REPEAT
    <statement>;
    [ <statement>; ... ]
UNTIL ( <condition> )
END REPEAT [ <label> ] ;
Copy

条件:

statement

ステートメントは、次のいずれかになります。

  • 単一の SQL ステートメント(CALL を含む)。

  • 制御フローステートメント(例: ループ または 分岐 ステートメント)。

  • ネストされた ブロック

condition

BOOLEAN に評価される式。

label

オプションのラベル。このようなラベルは、 BREAK または CONTINUE ステートメントのジャンプターゲットになる可能性があります。ラベルは、 オブジェクト識別子 の名前付け規則に従う必要があります。

使用上の注意

  • 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;
$$;
Copy

ストアドプロシージャを実行した結果は次のとおりです。

CALL power_of_2();
+------------+
| POWER_OF_2 |
|------------|
|        256 |
+------------+
Copy