LOOP (Snowflake Scripting)¶
Bei einer LOOP
-Schleife wird weder eine Anzahl von Iterationen noch eine Abbruchbedingung angegeben. Der Benutzer muss die Schleife explizit verlassen, indem innerhalb der Schleife BREAK oder RETURN verwendet wird.
Weitere Informationen zu Schleifen finden Sie unter Verwenden von Schleifen.
Bemerkung
Dieses Snowflake Scripting-Konstrukt ist nur innerhalb eines Snowflake Scripting-Blocks gültig.
Syntax¶
LOOP
<statement>;
[ <statement>; ... ]
END LOOP [ <label> ] ;
Wobei:
statement
Folgende Typen von Anweisungen sind möglich:
Eine einzelne SQL-Anweisung (einschließlich CALL)
Eine Ablaufsteuerungsanweisung (z. B. Schleife oder Verzweigung)
Ein verschachtelter Block
label
Ein optionales Label. Ein solches Label kann ein Sprungziel für eine BREAK- oder CONTINUE-Anweisung sein. Der Name muss den Regeln für Bezeichner folgen (siehe unter Objektbezeichner).
Nutzungshinweise¶
Eine
LOOP
-Schleife wird so lange wiederholt, bis einBREAK
oderRETURN
ausgeführt wird. Der BefehlBREAK
oderRETURN
steht fast immer innerhalb eines bedingten Ausdrucks (z. B.IF
oderCASE
).Eine Schleife kann mehrere Anweisungen enthalten. Sie können, müssen aber nicht, einen BEGIN … END-Block verwenden, um diese Anweisungen aufzunehmen.
Beispiele¶
Diese Schleife fügt vorhersagbare Testdaten in eine Tabelle ein:
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;
$$
;
Bei Ausführung der gespeicherten Prozedur wird folgende Ausgabe erstellt:
CALL break_out_of_loop();
+-------------------+
| BREAK_OUT_OF_LOOP |
|-------------------|
| 6 |
+-------------------+
Hier ist der Inhalt der Tabelle nach dem Aufruf der gespeicherten Prozedur:
SELECT *
FROM dummy_data
ORDER BY ID;
+----+
| ID |
|----|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+----+