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

Hinweis: Wenn Sie SnowSQL oder die klassische Weboberfläche verwenden, benutzen Sie stattdessen dieses Beispiel (siehe Verwenden von Snowflake Scripting in SnowSQL und über die klassische Weboberfläche):

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

Und hier ist die Ausgabe:

+-----------------+
| anonymous block |
|-----------------|
|               1 |
+-----------------+
Copy