REPEAT (Snowflake Scripting)¶
Eine REPEAT
-Schleife wird solange wiederholt, bis eine angegebene Bedingung erfüllt ist. Eine REPEAT
-Schleife testet die Bedingung am Ende der Schleife. Das bedeutet, dass der Inhalt einer REPEAT
-Schleife immer mindestens einmal ausgeführt 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¶
REPEAT
<statement>;
[ <statement>; ... ]
UNTIL ( <condition> )
END REPEAT [ <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
condition
Ein Ausdruck, der einen BOOLEAN-Wert ergibt
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¶
Verwenden Sie um die Bedingung in
REPEAT
Klammern. Beispiel:REPEAT ( <Bedingung> )
.Wenn
condition
nie TRUE ergibt und die Schleife keinen BREAK-Befehl (oder etwas Äquivalentes) enthält, dann wird die Schleife unendliche Male ausgeführt und es werden unbegrenzt Credits verbraucht.Wenn die
condition
NULL ist, dann wird sie als FALSE behandelt.Eine Schleife kann mehrere Anweisungen enthalten. Sie können, müssen aber nicht, einen BEGIN … END-Block verwenden, um diese Anweisungen aufzunehmen.
Beispiele¶
Im folgenden Beispiel wird eine Schleife zur Berechnung einer Potenz von 2 verwendet. (Dies ist eine ineffiziente Lösung, aber sie demonstriert die Schleifenbildung).
CREATE PROCEDURE power_of_2()
RETURNS NUMBER(8, 0)
LANGUAGE SQL
AS
$$
DECLARE
counter NUMBER(8, 0); -- Loop counter.
power_of_2 NUMBER(8, 0); -- Stores the most recent power of 2 that we calculated.
BEGIN
counter := 1;
power_of_2 := 1;
REPEAT
power_of_2 := power_of_2 * 2;
counter := counter + 1;
UNTIL (counter > 8)
END REPEAT;
RETURN power_of_2;
END;
$$;
Bei Ausführung der gespeicherten Prozedur wird folgende Ausgabe erstellt:
CALL power_of_2();
+------------+
| POWER_OF_2 |
|------------|
| 256 |
+------------+