LOOP (Exécution de scripts Snowflake)¶
Une boucle LOOP
ne spécifie pas un nombre d’itérations ou une condition de fin. L’utilisateur doit explicitement quitter la boucle en utilisant BREAK ou RETURN à l’intérieur de la boucle.
Pour plus d’informations sur les boucles, voir Travailler avec des boucles.
Note
Cette construction Exécution de scripts Snowflake n’est valable qu’à l’intérieur d’un bloc Exécution de scripts Snowflake.
Syntaxe¶
LOOP
<statement>;
[ <statement>; ... ]
END LOOP [ <label> ] ;
Où :
statement
Une instruction peut être l’un des éléments suivants :
label
Une étiquette facultative. Une telle étiquette peut être une cible de saut pour une instruction BREAK ou CONTINUE. Une étiquette doit respecter les règles de dénomination de Identificateurs d’objet.
Notes sur l’utilisation¶
Un
LOOP
se répète jusqu’à ce qu’unBREAK
ouRETURN
soit exécuté. La commandeBREAK
ouRETURN
se trouve presque toujours à l’intérieur d’une expression conditionnelle (par exemple,IF
ouCASE
).Une boucle peut contenir plusieurs instructions. Vous pouvez utiliser, sans y être obligé, un block BEGIN … END pour contenir ces instructions.
Exemples¶
Cette boucle insère des données de test prévisibles dans une table :
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;
$$
;
Voici le résultat de l’exécution de la procédure stockée :
CALL break_out_of_loop();
+-------------------+
| BREAK_OUT_OF_LOOP |
|-------------------|
| 6 |
+-------------------+
Voici le contenu de la table après avoir appelé la procédure stockée :
SELECT *
FROM dummy_data
ORDER BY ID;
+----+
| ID |
|----|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+----+