Iterative Steuerung

Mit den Anweisungen LOOP, WHILE, FOR und EXIT können Sie den Ausführungsablauf Ihres NZPLSQL-Programms iterativ steuern.

LOOP (Anweisung)

Die Anweisung LOOP definiert eine unbedingte Schleife, die so lange wiederholt wird, bis sie durch die Anweisung EXIT oder die Anweisung RETURN (die die Prozedur und die Schleife beendet) beendet wird. Sie weist die folgende Syntax auf:
[<<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)

Die Anweisung EXIT beendet eine Schleife. Sie weist die folgende Syntax auf:
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.

Beispiele:
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

Mit der Anweisung WHILE können Sie eine Sequenz von Anweisungen in einer Schleife durchlaufen, wenn die Auswertung des Bedingungsausdrucks 'wahr' (true) ergibt.
[<<label>>]
WHILE expression LOOP
statements
END LOOP;
Beispiel:
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

Mithilfe der Anweisung FOR können Sie eine Schleife erstellen, die einen Bereich von Ganzzahlwerten iteriert.
[<<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'.

Einige Beispiele für FOR-Schleifen:
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;