CASE (Snowflake Scripting)¶
Eine CASE
-Anweisung bietet die Möglichkeit, mehrere Bedingungen anzugeben.
Weitere Informationen zu Verzweigungskonstrukten finden Sie unter Verwenden von Verzweigungen.
Bemerkung
Dieses Snowflake Scripting-Konstrukt ist nur innerhalb eines Snowflake Scripting-Blocks gültig.
Syntax¶
Einfache CASE-Anweisung:
CASE ( <expression_to_match> ) WHEN <expression> THEN <statement>; [ <statement>; ... ] [ WHEN ... ] [ ELSE <statement>; [ <statement>; ... ] ] END [ CASE ] ;
Wobei:
expression_to_match
Der auf Übereinstimmung zu prüfende Ausdruck.
expression
Wenn der Wert dieses Ausdrucks mit dem Wert von
expression_to_match
übereinstimmt, dann werden die Anweisungen in dieser Klausel ausgeführt.
statement
Folgende Typen von Anweisungen sind möglich:
Eine einzelne SQL-Anweisung (einschließlich CALL)
Eine Ablaufsteuerungsanweisung (z. B. Schleife oder Verzweigung)
Ein verschachtelter Block
Durchsuchte CASE-Anweisung:
CASE WHEN <boolean_expression> THEN <statement>; [ <statement>; ... ] [ WHEN ... ] [ ELSE <statement>; [ <statement>; ... ] ] END [ CASE ] ;
Wobei:
boolean_expression
Wenn dieser Ausdruck TRUE ergibt, werden die Anweisungen in dieser Klausel ausgeführt.
statement
Folgende Typen von Anweisungen sind möglich:
Eine einzelne SQL-Anweisung (einschließlich CALL)
Eine Ablaufsteuerungsanweisung (z. B. Schleife oder Verzweigung)
Ein verschachtelter Block
Nutzungshinweise¶
Wenn mehr als ein
CASE
-Zweig mit dem Ausdruck übereinstimmen würde, wird nur der erste verwendet.Wenn Sie Ausdrücke vergleichen, stimmt NULL nicht mit NULL überein. Wenn Sie explizit auf NULL-Werte testen möchten, verwenden Sie IS [ NOT ] NULL.
Beispiele¶
In diesem Beispiel wird eine einfache CASE
-Anweisung verwendet:
CREATE PROCEDURE case_demo_01(v VARCHAR) RETURNS VARCHAR LANGUAGE SQL AS BEGIN CASE (v) WHEN 'first choice' THEN RETURN 'one'; WHEN 'second choice' THEN RETURN 'two'; ELSE RETURN 'unexpected choice'; END; END;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):
CREATE PROCEDURE case_demo_01(v VARCHAR) RETURNS VARCHAR LANGUAGE SQL AS $$ BEGIN CASE (v) WHEN 'first choice' THEN RETURN 'one'; WHEN 'second choice' THEN RETURN 'two'; ELSE RETURN 'unexpected choice'; END CASE; END; $$ ;
Wenn Sie diese gespeicherte Prozedur aufrufen, erzeugt die Prozedur die folgende Ausgabe:
CALL case_demo_01('second choice'); +--------------+ | CASE_DEMO_01 | |--------------| | two | +--------------+
Im folgenden Beispiel wird eine durchsuchte CASE
-Anweisung verwendet:
CREATE PROCEDURE case_demo_2(v VARCHAR) RETURNS VARCHAR LANGUAGE SQL AS BEGIN CASE WHEN v = 'first choice' THEN RETURN 'one'; WHEN v = 'second choice' THEN RETURN 'two'; ELSE RETURN 'unexpected choice'; END; END;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):
CREATE PROCEDURE case_demo_2(v VARCHAR) RETURNS VARCHAR LANGUAGE SQL AS $$ BEGIN CASE WHEN v = 'first choice' THEN RETURN 'one'; WHEN v = 'second choice' THEN RETURN 'two'; ELSE RETURN 'unexpected choice'; END CASE; END; $$ ;
Wenn Sie diese gespeicherte Prozedur aufrufen, erzeugt die Prozedur die folgende Ausgabe:
CALL case_demo_2('none of the above'); +-------------------+ | CASE_DEMO_2 | |-------------------| | unexpected choice | +-------------------+