Verwenden von Verzweigungen

Snowflake Scripting unterstützt die folgenden Verzweigungskonstrukte:

  • IF-THEN-ELSEIF-ELSE

  • CASE

Unter diesem Thema:

IF-Anweisungen

In Snowflake Scripting können Sie mit einer IF-Anweisung eine Bedingung prüfen und eine Menge von Anweisungen ausführen, wenn die Bedingung erfüllt ist.

Die Syntax für die IF-Anweisung lautet:

IF (<condition>) THEN
  -- Statements to execute if the <condition> is true.

[ ELSEIF ( <condition_2> ) THEN
  -- Statements to execute if the <condition_2> is true.
]

[ ELSE
   -- Statements to execute if none of the conditions is true.
]

END IF;
Copy

In der IF-Anweisung:

  • Wenn Sie zusätzliche Bedingungen angeben müssen, fügen Sie für jede Bedingung eine ELSEIF-Klausel hinzu.

  • Um die Anweisungen anzugeben, die ausgeführt werden sollen, wenn keine der Bedingungen erfüllt wird, fügen Sie eine ELSE-Klausel hinzu.

  • Die ELSEIF- und ELSE-Klauseln sind optional.

Im Folgenden finden Sie ein einfaches Beispiel für eine IF-Anweisung:

BEGIN
  LET count := 1;
  IF (count < 0) THEN
    return 'negative value';
  ELSEIF (count = 0) THEN
    return 'zero';
  ELSE
    return 'positive value';
  END IF;
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 $$
BEGIN
  LET count := 1;
  IF (count < 0) THEN
    return 'negative value';
  ELSEIF (count = 0) THEN
    return 'zero';
  ELSE
    return 'positive value';
  END IF;
END;
$$
;
Copy

Die vollständige Syntax und Einzelheiten zu IF-Anweisungen finden Sie unter IF (Snowflake Scripting).

CASE-Anweisungen

Eine CASE-Anweisung verhält sich ähnlich wie eine IF-Anweisung, bietet jedoch eine einfachere Möglichkeit zur Angabe mehrerer Bedingungen.

Snowflake Scripting unterstützt zwei Formen der CASE-Anweisung:

In den nächsten Abschnitten wird erläutert, wie diese unterschiedlichen Formen verwendet werden:

Bemerkung

Snowflake unterstützt andere Verwendungen des Schlüsselworts CASE außerhalb von Snowflake Scripting (z. B. den bedingten CASE-Ausdruck).

Einfache CASE-Anweisungen

In einer einfachen CASE-Anweisung definieren Sie verschiedene Verzweigungen (WHEN-Klauseln) für verschiedene mögliche Werte eines bestimmten Ausdrucks.

Die Syntax für die einfache CASE-Anweisung lautet:

CASE ( <expression_to_match> )

    WHEN <value_1_of_expression> THEN
        <statement>;
        [ <statement>; ... ]

    [ WHEN <value_2_of_expression> THEN
        <statement>;
        [ <statement>; ... ]
    ]

    ... -- Additional WHEN clauses for other possible values;

    [ ELSE
        <statement>;
        [ <statement>; ... ]
    ]

END [ CASE ] ;
Copy

Snowflake führt den ersten Zweig aus, bei dem value_n_of_expression mit dem Wert von expression_to_match übereinstimmt.

Angenommen, dass Sie je nach dem Wert der Variablen expression_to_evaluate verschiedene Anweisungen ausführen möchten. Für jeden möglichen Wert dieser Variablen (z. B. value a, value b usw.) können Sie eine WHEN-Klausel definieren, die die auszuführenden Anweisungen angibt:

DECLARE
  expression_to_evaluate VARCHAR DEFAULT 'default value';
BEGIN
  expression_to_evaluate := 'value a';
  CASE (expression_to_evaluate)
    WHEN 'value a' THEN
      return 'x';
    WHEN 'value b' THEN
      return 'y';
    WHEN 'value c' THEN
      return 'z';
    WHEN 'default value' THEN
      return 'default';
    ELSE
      return 'other';
  END;
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
  expression_to_evaluate VARCHAR DEFAULT 'default value';
BEGIN
  expression_to_evaluate := 'value a';
  CASE (expression_to_evaluate)
    WHEN 'value a' THEN
      return 'x';
    WHEN 'value b' THEN
      return 'y';
    WHEN 'value c' THEN
      return 'z';
    WHEN 'default value' THEN
      return 'default';
    ELSE
      return 'other';
  END;
END;
$$
;
Copy

Die vollständige Syntax und Einzelheiten zu CASE-Anweisungen finden Sie unter CASE (Snowflake Scripting).

Durchsuchte CASE-Anweisungen

In der durchsuchten (searched) CASE-Anweisung geben Sie für jede Verzweigung (WHEN-Klausel) unterschiedliche Bedingungen an. Snowflake führt den ersten Zweig aus, für den der Ausdruck TRUE ergibt.

Die Syntax für die durchsuchte CASE-Anweisung lautet:

CASE

  WHEN <condition_1> THEN
    <statement>;
    [ <statement>; ... ]

  [ WHEN <condition_2> THEN
    <statement>;
    [ <statement>; ... ]
  ]

  ... -- Additional WHEN clauses for other possible conditions;

  [ ELSE
    <statement>;
    [ <statement>; ... ]
  ]

END [ CASE ] ;
Copy

Wenn Sie beispielsweise die folgende CASE-Anweisung ausführen, ist der zurückgegebene Wert a is x, da dieser Zweig der erste Zweig ist, in dem der Ausdruck TRUE ergibt:

DECLARE
  a VARCHAR DEFAULT 'x';
  b VARCHAR DEFAULT 'y';
  c VARCHAR DEFAULT 'z';
BEGIN
  CASE
    WHEN a = 'x' THEN
      return 'a is x';
    WHEN b = 'y' THEN
      return 'b is y';
    WHEN c = 'z' THEN
      return 'c is z';
    ELSE
      return 'a is not x, b is not y, and c is not z';
  END;
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
  a VARCHAR DEFAULT 'x';
  b VARCHAR DEFAULT 'y';
  c VARCHAR DEFAULT 'z';
BEGIN
  CASE
    WHEN a = 'x' THEN
      return 'a is x';
    WHEN b = 'y' THEN
      return 'b is y';
    WHEN c = 'z' THEN
      return 'c is z';
    ELSE
      return 'a is not x, b is not y, and c is not z';
  END;
END;
$$
;
Copy

Die vollständige Syntax und Einzelheiten zu CASE-Anweisungen finden Sie unter CASE (Snowflake Scripting).