BREAK (Script Snowflake)

BREAK (ou EXIT) encerra um loop.

Para obter mais informações sobre os loops de encerramento, consulte Encerramento de um loop.

Nota

Este constructo do Script Snowflake só é válido dentro de um bloco do Script Snowflake.

Consulte também

CONTINUE

Sintaxe

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

Onde:

label

Uma tag opcional. Se a tag for especificada, o BREAK saltará para a instrução imediatamente após a tag.

Você pode usar isso para sair de mais de um nível de um loop aninhado ou de um ramo aninhado.

Notas de uso

  • BREAK e EXIT são sinônimos.

  • Se o loop fizer parte de um outro(s) loop(s), você pode sair não apenas do loop atual, mas também de um loop envolvente, incluindo a tag do loop envolvente como parte do BREAK. Para obter um exemplo, consulte a seção exemplos abaixo.

Exemplos

Aqui está um exemplo de como usar BREAK para sair não apenas do loop atual, mas também de um loop de delimitação:

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

Nota: se você estiver usando SnowSQL ou Classic Console, use este exemplo (consulte Como usar o Script Snowflake no SnowSQL e na 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

Aqui está a saída:

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