BREAK (Snowflake Scripting)

BREAK (或 EXIT)终止循环。

有关终止循环的更多信息,请参阅 终止循环

备注

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

另请参阅:

CONTINUE

语法

{ BREAK | EXIT } [ <label> ] ;
Copy

其中:

label

可选标签。如果指定了标签,BREAK 将跳转到标签后面的语句。

可以使用该标签来突破嵌套循环或嵌套分支的多个级别。

使用说明

  • BREAKEXIT 是同义的。

  • 如果循环嵌入在另一个循环中,不仅可以退出当前循环,还可以通过将封闭循环的标签作为 BREAK 的一部分来退出封闭循环。有关示例,请参阅下面的示例部分。

示例

下面是一个使用 BREAK 不仅退出当前循环,还退出封闭循环的示例:

DECLARE
  i INTEGER;
  j INTEGER;
BEGIN
  i := 1;
  j := 1;
  WHILE (i <= 4) DO
    WHILE (j <= 4) DO
      -- Exit when j is 3, even if i is still 1.
      IF (j = 3) THEN
        BREAK outer_loop;
      END IF;
      j := j + 1;
    END WHILE inner_loop;
    i := i + 1;
  END WHILE outer_loop;
  -- Execution resumes here after the BREAK executes.
  RETURN i;
END;
Copy

注意:如果您在 Python Connector 代码中使用 SnowSQLClassic Console 或者 execute_streamexecute_string 方法,请改用本示例(请参阅 在 SnowSQL、Classic Console 和 Python Connector 中使用 Snowflake Scripting):

EXECUTE IMMEDIATE $$
    DECLARE
        i INTEGER;
        j INTEGER;
    BEGIN
        i := 1;
        j := 1;
        WHILE (i <= 4) DO
            WHILE (j <= 4) DO
                -- Exit when j is 3, even if i is still 1.
                IF (j = 3) THEN
                     BREAK outer_loop;
                END IF;
                j := j + 1;
            END WHILE inner_loop;
            i := i + 1;
        END WHILE outer_loop;
        -- Execution resumes here after the BREAK executes.
        RETURN i;
    END;
$$;
Copy

以下是输出:

+-----------------+
| anonymous block |
|-----------------|
|               1 |
+-----------------+
Copy
语言: 中文