LOOP (Snowflakeスクリプト)¶
LOOP
ループは、反復回数または終了条件を指定しません。ユーザーは、ループ内で BREAK または RETURN を使用して、明示的にループを終了する必要があります。
ループの詳細については、 ループの操作 をご参照ください。
注釈
この Snowflakeスクリプト 構造は、 Snowflakeスクリプトブロック 内でのみ有効です。
構文¶
LOOP
<statement>;
[ <statement>; ... ]
END LOOP [ <label> ] ;
条件:
使用上の注意¶
LOOP
は、BREAK
またはRETURN
が実行されるまで繰り返されます。BREAK
またはRETURN
コマンドは、ほとんどの場合、条件式(例:IF
またはCASE
)内にあります。ループには複数のステートメントを含めることができます。これらのステートメントを含めるために BEGIN ... END ブロック を使用できますが、必須ではありません。
例¶
このループは、予測可能なテストデータをテーブルに挿入します。
CREATE TABLE dummy_data (ID INTEGER);
CREATE PROCEDURE break_out_of_loop()
RETURNS INTEGER
LANGUAGE SQL
AS
$$
DECLARE
counter INTEGER;
BEGIN
counter := 0;
LOOP
counter := counter + 1;
IF (counter > 5) THEN
BREAK;
END IF;
INSERT INTO dummy_data (ID) VALUES (:counter);
END LOOP;
RETURN counter;
END;
$$
;
ストアドプロシージャを実行した結果は次のとおりです。
CALL break_out_of_loop();
+-------------------+
| BREAK_OUT_OF_LOOP |
|-------------------|
| 6 |
+-------------------+
ストアドプロシージャを呼び出した後のテーブルのコンテンツは次のとおりです。
SELECT *
FROM dummy_data
ORDER BY ID;
+----+
| ID |
|----|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+----+