CASE (Exécution de scripts Snowflake)¶
Une instruction CASE
permet de spécifier plusieurs conditions.
Pour plus d’informations sur les « branching » standard, voir Travailler avec la logique conditionnelle.
Note
Cette construction Exécution de scripts Snowflake n’est valable qu’à l’intérieur d’un bloc Exécution de scripts Snowflake.
Syntaxe¶
Simple instruction CASE :
CASE ( <expression_to_match> ) WHEN <expression> THEN <statement>; [ <statement>; ... ] [ WHEN ... ] [ ELSE <statement>; [ <statement>; ... ] ] END [ CASE ] ;
Où :
expression_to_match
L’expression à faire correspondre.
expression
Si la valeur de cette expression correspond à la valeur de
expression_to_match
, alors les instructions de cette clause sont exécutées.
statement
Une instruction peut être l’un des éléments suivants :
Une seule instruction SQL (y compris CALL).
Une instruction de flux de contrôle (par exemple, une instruction de bouclage ou de branchement).
Un bloc imbriqué.
Instruction CASE recherchée :
CASE WHEN <boolean_expression> THEN <statement>; [ <statement>; ... ] [ WHEN ... ] [ ELSE <statement>; [ <statement>; ... ] ] END [ CASE ] ;
Où :
boolean_expression
Si cette expression est évaluée à TRUE, alors les instructions de cette clause sont exécutées.
statement
Une instruction peut être l’un des éléments suivants :
Une seule instruction SQL (y compris CALL).
Une instruction de flux de contrôle (par exemple, une instruction de bouclage ou de branchement).
Un bloc imbriqué.
Notes sur l’utilisation¶
Si plus d’une branche de
CASE
correspond à l’expression, seule la première est utilisée.Lorsque vous comparez des expressions, NULL ne correspond pas à NULL. Si vous souhaitez tester explicitement les valeurs NULL, utilisez IS [ NOT ] NULL.
Exemples¶
Cet exemple illustre une simple instruction CASE
:
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;Remarque : si vous utilisez SnowSQL, Classic Console, ou la méthode
execute_stream
ouexecute_string
dans le code Python Connector, utilisez cet exemple à la place (voir Utilisation d’Exécution de scripts Snowflake dans SnowSQL, Classic Console, et le connecteur Python) :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; $$ ;
Lorsque vous appelez cette procédure stockée, la procédure produit le résultat suivant :
CALL case_demo_01('second choice'); +--------------+ | CASE_DEMO_01 | |--------------| | two | +--------------+
Cet exemple illustre une instruction CASE
recherchée :
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;Remarque : si vous utilisez SnowSQL, Classic Console, ou la méthode
execute_stream
ouexecute_string
dans le code Python Connector, utilisez cet exemple à la place (voir Utilisation d’Exécution de scripts Snowflake dans SnowSQL, Classic Console, et le connecteur Python) :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; $$ ;
Lorsque vous appelez cette procédure stockée, la procédure produit le résultat suivant :
CALL case_demo_2('none of the above'); +-------------------+ | CASE_DEMO_2 | |-------------------| | unexpected choice | +-------------------+