LOOP (Snowflake Scripting)

LOOP 循环不指定迭代次数或终止条件。用户必须在循环中使用 BREAKRETURN 显式退出循环。

有关循环的更多信息,请参阅 使用循环

备注

Snowflake Scripting 结构仅在 Snowflake Scripting 区块 内有效。

另请参阅:

BREAKCONTINUERETURN

语法

LOOP
    <statement>;
    [ <statement>; ... ]
END LOOP [ <label> ] ;
Copy

其中:

statement

语句可以是以下任一语句:

label

可选标签。此类标签可以是 BREAKCONTINUE 语句的跳转目标。标签必须遵循 对象标识符 的命名规则。

使用说明

  • LOOP 一直重复,直到执行 BREAKRETURNBREAKRETURN 命令几乎总是在条件表达式中(例如 IFCASE)。

  • 一个循环可以包含多个语句。您可以(但不是必须)使用 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;
$$
;
Copy

以下是执行存储过程的输出:

CALL break_out_of_loop();
+-------------------+
| BREAK_OUT_OF_LOOP |
|-------------------|
|                 6 |
+-------------------+
Copy

以下是调用存储过程后的表内容:

SELECT *
    FROM dummy_data
    ORDER BY ID;
+----+
| ID |
|----|
|  1 |
|  2 |
|  3 |
|  4 |
|  5 |
+----+
Copy
语言: 中文