Travailler avec la logique conditionnelle¶
Exécution de scripts Snowflake prend en charge les constructions « branching » suivantes pour la logique conditionnelle :
IF-THEN-ELSEIF-ELSE
CASE
Instructions IF¶
Dans Exécution de scripts Snowflake, vous pouvez exécuter un ensemble d’instructions si une condition est remplie en utilisant une instruction IF.
La syntaxe de l’instruction IF est la suivante :
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 ;
Dans une instruction IF :
Si vous devez spécifier des conditions supplémentaires, ajoutez une clause ELSEIF pour chaque condition.
Pour spécifier les instructions à exécuter quand aucune des conditions n’est évaluée comme TRUE, ajoutez une clause ELSE.
Les clauses ELSEIF et ELSE sont facultatives.
Voici un exemple simple d’une instruction IF :
BEGIN
LET count := 1;
IF (count < 0) THEN
RETURN 'negative value';
ELSEIF (count = 0) THEN
RETURN 'zero';
ELSE
RETURN 'positive value';
END IF;
END;
Remarque : si vous utilisez SnowSQL, Classic Console, ou la méthode execute_stream
ou execute_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) :
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 |
+-----------------+
Pour une syntaxe complète et des détails sur les instructions IF, voir IF (Exécution de scripts Snowflake).
Instructions CASE¶
Une instruction CASE se comporte de la même manière qu’une instruction IF mais offre un moyen plus simple de spécifier des conditions multiples.
Exécution de scripts Snowflake prend en charge deux formes de l’instruction CASE :
Les sections suivantes expliquent comment utiliser ces différentes formes.
Note
Snowflake prend en charge d’autres utilisations du mot-clé CASE en dehors d’Exécution de scripts Snowflake (par exemple, l’expression conditionnelle CASE).
Instructions CASE simples¶
Dans une instruction CASE simple, vous définissez différentes branches (clauses WHEN) pour différentes valeurs possibles d’une expression donnée.
La syntaxe de l’instruction CASE simple est la suivante :
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 exécute la première branche pour laquelle value_n_of_expression
correspond à la valeur de expression_to_match
.
Par exemple, supposons que vous vouliez exécuter différentes instructions, en fonction de la valeur de la variable expression_to_evaluate
. Pour chaque valeur possible de cette variable (par exemple value a
, value b
, etc.), vous pouvez définir une clause WHEN qui spécifie la ou les instructions à exécuter :
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;
Remarque : si vous utilisez SnowSQL, Classic Console, ou la méthode execute_stream
ou execute_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) :
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 |
+-----------------+
Pour une syntaxe complète et des détails sur les instructions CASE, voir CASE (Exécution de scripts Snowflake).
Instructions CASE recherchées¶
Dans l’instruction CASE recherchée, vous spécifiez différentes conditions pour chaque branche (clause WHEN). Snowflake exécute la première branche pour laquelle l’expression correspond à TRUE.
La syntaxe de l’instruction CASE recherchée est la suivante :
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 ] ;
Par exemple, lorsque vous exécutez l’instruction CASE suivante, la valeur renvoyée est a is x
car cette branche est la première branche dans laquelle l’expression correspond à TRUE :
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;
Remarque : si vous utilisez SnowSQL, Classic Console, ou la méthode execute_stream
ou execute_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) :
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 |
+-----------------+
Pour une syntaxe complète et des détails sur les instructions CASE, voir CASE (Exécution de scripts Snowflake).