Verwenden von bedingter Logik¶
Snowflake Scripting unterstützt die folgenden Verzweigungskonstrukte für die bedingte Logik:
IF-THEN-ELSEIF-ELSE
CASE
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 are true.
]
END IF ;
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 TRUE ergibt, 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;
Hinweis: Wenn Sie SnowSQL, die Classic Console oder die execute_stream
- oder execute_string
-Methode im Python-Konnektor-Code verwenden, benutzen Sie stattdessen das folgende Beispiel (siehe Verwenden von Snowflake Scripting in SnowSQL, in der Classic Console und im Python-Konnektor):
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;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| positive value |
+-----------------+
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 ] ;
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;
Hinweis: Wenn Sie SnowSQL, die Classic Console oder die execute_stream
- oder execute_string
-Methode im Python-Konnektor-Code verwenden, benutzen Sie stattdessen das folgende Beispiel (siehe Verwenden von Snowflake Scripting in SnowSQL, in der Classic Console und im Python-Konnektor):
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;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| x |
+-----------------+
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 ] ;
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;
Hinweis: Wenn Sie SnowSQL, die Classic Console oder die execute_stream
- oder execute_string
-Methode im Python-Konnektor-Code verwenden, benutzen Sie stattdessen das folgende Beispiel (siehe Verwenden von Snowflake Scripting in SnowSQL, in der Classic Console und im Python-Konnektor):
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;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| a is x |
+-----------------+
Die vollständige Syntax und Einzelheiten zu CASE-Anweisungen finden Sie unter CASE (Snowflake Scripting).