Controllo iterativo
Con le istruzioni LOOP, WHILE, FOR ed EXIT è possibile controllare il flusso di esecuzione del programma NZPLSQL in modo iterativo.
Istruzione LOOP
[<<label>>]
LOOP
statements
END LOOP;L'etichetta opzionale può essere utilizzata dalle istruzioni EXIT dei cicli annidati per specificare quale livello di annidamento viene terminato.
Dichiarazione EXIT
EXIT [ label ] [ WHEN expression ];Se non si specifica un'etichetta, il ciclo più interno viene terminato e l'istruzione successiva a END LOOP viene eseguita. Se si specifica un'etichetta, questa deve essere l'etichetta del ciclo o del blocco corrente o di un livello superiore. A questo punto, il ciclo o il blocco chiamato viene terminato e il controllo continua con l'istruzione dopo il corrispondente END del ciclo o dei blocchi.
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;
Istruzione 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;Istruzione FOR
[<<label>>]
FOR name IN [ REVERSE ] expression .. expression LOOP
statements
END LOOP;Il nome della variabile viene creato automaticamente come tipo intero ed esiste solo all'interno del ciclo. Le due espressioni per il limite inferiore e superiore dell'intervallo vengono valutate solo quando si entra nel ciclo. Il passo di iterazione è sempre 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;