LOOP (Script Snowflake)¶
Um loop LOOP
não especifica uma série de iterações ou uma condição de término. O usuário deve sair explicitamente do loop usando BREAK ou RETURN dentro do loop.
Para obter mais informações sobre loops, consulte Como trabalhar com loops.
Nota
Este constructo do Script Snowflake só é válido dentro de um bloco do Script Snowflake.
Sintaxe¶
LOOP
<statement>;
[ <statement>; ... ]
END LOOP [ <label> ] ;
Onde:
statement
Uma instrução pode ser qualquer uma das seguintes opções:
Uma única instrução SQL (incluindo CALL).
Uma instrução de fluxo de controle (ex.: instrução de looping ou ramificação).
Um bloco aninhado.
label
Uma tag opcional. Tal tag pode ser um destino de salto para uma instrução BREAK ou CONTINUE. Uma tag deve seguir as regras de nomenclatura para Identificadores de objetos.
Notas de uso¶
O
LOOP
se repete até que umBREAK
ouRETURN
seja executado. O comandoBREAK
ouRETURN
está quase sempre dentro de uma expressão condicional (por exemplo,IF
ouCASE
).Um loop pode conter múltiplas instruções. Você pode usar um BEGIN … END bloco para conter essas instruções, mas isso não é obrigatório.
Exemplos¶
Este loop insere dados de teste previsíveis em uma tabela:
CREATE TABLE dummy_data (ID INTEGER);
CREATE PROCEDURE break_out_of_loop()
RETURNS INTEGER
LANGUAGE SQL
AS
$$
DECLARE
counter INTEGER;
BEGIN
counter := 0;
LOOP
counter := counter + 1;
IF (counter > 5) THEN
BREAK;
END IF;
INSERT INTO dummy_data (ID) VALUES (:counter);
END LOOP;
RETURN counter;
END;
$$
;
Aqui está o resultado da execução do procedimento armazenado:
CALL break_out_of_loop();
+-------------------+
| BREAK_OUT_OF_LOOP |
|-------------------|
| 6 |
+-------------------+
Aqui está o conteúdo da tabela após chamar o procedimento armazenado:
SELECT *
FROM dummy_data
ORDER BY ID;
+----+
| ID |
|----|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+----+