REPEAT (Snowflake Scripting)

REPEAT 循环迭代,直到指定的条件为 true。REPEAT 循环测试循环结束时的条件。这意味着 REPEAT 循环的正文总是至少执行一次。

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

备注

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

另请参阅:

BREAKCONTINUE

语法

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

其中:

statement

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

condition

计算结果为 BOOLEAN 的表达式。

label

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

使用说明

  • REPEAT 中将条件放在括号内。例如:REPEAT ( <condition> )

  • 如果 condition 从不评估为 TRUE,并且循环不包含 BREAK 命令(或等效命令),则循环将无限期运行并消耗 Credit。

  • 如果 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
语言: 中文