Control iterativo
Con las sentencias LOOP, WHILE, FOR y EXIT, puede controlar el flujo de ejecución del programa NZPLSQL de forma iterativa.
Sentencia LOOP
[<<label>>]
LOOP
statements
END LOOP;Las sentencias EXIT de bucles anidados pueden utilizar la etiqueta opcional para especificar qué nivel de anidamiento termina.
sentencia EXIT
EXIT [ label ] [ WHEN expression ];Si no especifica una etiqueta, el bucle más interno termina y la sentencia que sigue a END LOOP se ejecuta a continuación. Si especifica una etiqueta, debe ser la etiqueta del nivel actual o de uno superior del bucle anidado o de los bloques. A continuación, el bucle o bloque mencionado termina y el control continúa con la sentencia después del correspondiente END del bucle o bloques.
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;
Sentencia 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;Sentencia FOR
[<<label>>]
FOR name IN [ REVERSE ] expression .. expression LOOP
statements
END LOOP;El nombre de variable se crea automáticamente como tipo entero y existe sólo dentro del bucle. Las dos expresiones para el límite inferior y superior del rango sólo se evalúan cuando se entra en el bucle. El paso de iteración es siempre 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;