Travailler avec des constructions « branching »

Exécution de scripts Snowflake prend en charge les constructions « branching » suivantes :

  • IF-THEN-ELSEIF-ELSE

  • CASE

Dans ce chapitre :

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 is true.
]

END IF;
Copy

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 si aucune des conditions n’est évaluée comme vraie, 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;
Copy

Remarque : si vous utilisez SnowSQL ou l”Classic Console, utilisez cet exemple à la place (voir Utilisation d’Exécution de scripts Snowflake dans SnowSQL et l”Classic Console) :

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

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

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

Remarque : si vous utilisez SnowSQL ou l”Classic Console, utilisez cet exemple à la place (voir Utilisation d’Exécution de scripts Snowflake dans SnowSQL et l”Classic Console) :

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

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

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

Remarque : si vous utilisez SnowSQL ou l”Classic Console, utilisez cet exemple à la place (voir Utilisation d’Exécution de scripts Snowflake dans SnowSQL et l”Classic Console) :

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

Pour une syntaxe complète et des détails sur les instructions CASE, voir CASE (Exécution de scripts Snowflake).