Iterative Steuerung
Mit den Anweisungen LOOP, WHILE, FOR und EXIT können Sie den Ausführungsablauf Ihres NZPLSQL-Programms iterativ steuern.
LOOP (Anweisung)
[<<label>>]
LOOP
statements
END LOOP;Die optionale Beschriftung kann von EXIT-Anweisungen verschachtelter Schleifen verwendet werden, um anzugeben, welche Ebene der Verschachtelung beendet wird.
EXIT (Anweisung)
EXIT [ label ] [ WHEN expression ];Wenn Sie keine Beschriftung angeben, wird die innerste Schleife beendet und als nächstes wird die auf END LOOP folgende Anweisung ausgeführt. Wenn Sie eine Beschriftung angeben, muss dies die Beschriftung der aktuellen verschachtelten Schleife bzw. des aktuellen verschachtelten Blocks oder deren bzw. dessen höherer Ebene sein. Die benannte Schleife bzw. der benannte Block wird dann beendet und die Steuerung fährt mit der Anweisung fort, die auf das entsprechende Ende (END) der Schleife oder der Blocks folgt.
LOOP
-- some computations
IF count > 0 THEN
EXIT; -- exit loop
END IF;
END LOOP;
LOOP
-- some computations
EXIT WHEN count > 0;
END LOOP;
BEGIN
-- some computations
IF stocks > 100000 THEN
EXIT;
END IF;
END;
eine Anweisung WHILE
[<<label>>]
WHILE expression LOOP
statements
END LOOP;WHILE amount_owed > 0 AND gift_certificate_balance > 0 LOOP
-- some computations here
END LOOP;
WHILE NOT boolean_expression LOOP
-- some computations here
END LOOP;eine Anweisung FOR
[<<label>>]
FOR name IN [ REVERSE ] expression .. expression LOOP
statements
END LOOP;Der Variablenname wird automatisch mit dem Typ 'integer' erstellt und ist nur innerhalb der Schleife vorhanden. Die beiden Ausdrücke für die untere und die obere Grenze des Bereichs werden nur bei Eintritt in die Schleife ausgewertet. Der Iterationsschritt lautet stets '1'.
FOR i IN 1 .. 10 LOOP
-- some expressions here
RAISE NOTICE 'i is %',i;
END LOOP;
FOR i IN REVERSE 10 .. 1 LOOP
-- some expressions here
END LOOP;