BREAK

BREAK (ou EXIT) termine une boucle.

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

Voir aussi

CONTINUE

Syntaxe

{ BREAK | EXIT } [ <label> ] ;

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;

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

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

Voici la sortie :

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