BREAK (Snowflake Scripting)

BREAK (oder EXIT) beendet eine Schleife.

Weitere Informationen zur Beendigung von Schleifen finden Sie unter Beenden einer Schleife.

Bemerkung

Dieses Snowflake Scripting-Konstrukt ist nur innerhalb eines Snowflake Scripting-Blocks gültig.

Siehe auch::

CONTINUE

Syntax

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

Wobei:

label

Ein optionales Label. Wenn das Label angegeben ist, springt BREAK zu der Anweisung unmittelbar nach dem Label.

Damit können Sie aus mehr als einer Ebene einer verschachtelten Schleife oder einer verschachtelten Verzweigung herauszuspringen.

Nutzungshinweise

  • BREAK und EXIT sind gleichbedeutend.

  • Wenn die Schleife in eine oder mehrere andere Schleifen eingebettet ist, können Sie nicht nur die aktuelle Schleife, sondern auch eine umschließende Schleife verlassen, indem Sie das Label der umschließenden Schleife als Teil von BREAK einfügen. Ein Beispiel dazu finden Sie im Beispielabschnitt unten.

Beispiele

Hier ist ein Beispiel für die Verwendung von BREAK, um nicht nur die aktuelle Schleife, sondern auch eine umgebende Schleife zu verlassen:

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

Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the execute_stream or execute_string method in Python Connector code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):

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 |
+-----------------+