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 ] ;
Copy

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 ] ;
Copy

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;
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):

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;
$$
;
Copy

Wenn Sie diese gespeicherte Prozedur aufrufen, erzeugt die Prozedur die folgende Ausgabe:

CALL case_demo_01('second choice');
+--------------+
| CASE_DEMO_01 |
|--------------|
| two          |
+--------------+
Copy

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;
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):

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;
$$
;
Copy

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