BREAK (Snowflakeスクリプト)

BREAK (または EXIT)は、ループを終了します。

ループの終了の詳細については、 ループの終了 をご参照ください。

注釈

この Snowflakeスクリプト 構造は、 Snowflakeスクリプトブロック 内でのみ有効です。

こちらもご参照ください:

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

注: SnowSQL または Classic Console を使用している場合は、代わりに次の例を使用します(SnowSQL および Classic Console でのSnowflakeスクリプトの使用 を参照)。

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