LOOP (Snowflake Scripting)¶
LOOP
循环不指定迭代次数或终止条件。用户必须在循环中使用 BREAK 或 RETURN 显式退出循环。
有关循环的更多信息,请参阅 使用循环。
备注
本 Snowflake Scripting 结构仅在 Snowflake Scripting 区块 内有效。
语法¶
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 |
+----+