BREAK (Exécution de scripts Snowflake)

BREAK (ou EXIT) termine une boucle.

Pour plus d’informations sur la terminaison des boucles, voir Terminer une boucle.

Note

Cette construction Exécution de scripts Snowflake n’est valable qu’à l’intérieur d’un bloc Exécution de scripts Snowflake.

Voir aussi:

CONTINUE

Syntaxe

{ BREAK | EXIT } [ <label> ] ;
Copy

Où :

label

Une étiquette facultative. Si l’étiquette est spécifiée, le BREAK passera à l’instruction qui suit immédiatement l’étiquette.

Vous pouvez l’utiliser pour sortir de plus d’un niveau d’une boucle imbriquée ou d’une branche imbriquée.

Notes sur l’utilisation

  • BREAK et EXIT sont synonymes.

  • Si la boucle est intégrée dans une ou plusieurs autres boucles, vous pouvez sortir non seulement de la boucle actuelle, mais aussi d’une boucle englobante, en incluant l’étiquette de la boucle englobante dans le BREAK. Pour un exemple, voir la section Exemples ci-dessous.

Exemples

Voici un exemple d’utilisation de BREAK pour sortir non seulement de la boucle actuelle, mais aussi d’une boucle englobante :

DECLARE
  i INTEGER;
  j INTEGER;
BEGIN
  i := 1;
  j := 1;
  WHILE (i <= 4) DO
    WHILE (j <= 4) DO
      -- Exit when j is 3, even if i is still 1.
      IF (j = 3) THEN
        BREAK outer_loop;
      END IF;
      j := j + 1;
    END WHILE inner_loop;
    i := i + 1;
  END WHILE outer_loop;
  -- Execution resumes here after the BREAK executes.
  RETURN i;
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
        i INTEGER;
        j INTEGER;
    BEGIN
        i := 1;
        j := 1;
        WHILE (i <= 4) DO
            WHILE (j <= 4) DO
                -- Exit when j is 3, even if i is still 1.
                IF (j = 3) THEN
                     BREAK outer_loop;
                END IF;
                j := j + 1;
            END WHILE inner_loop;
            i := i + 1;
        END WHILE outer_loop;
        -- Execution resumes here after the BREAK executes.
        RETURN i;
    END;
$$;
Copy

Voici la sortie :

+-----------------+
| anonymous block |
|-----------------|
|               1 |
+-----------------+
Copy