Existen varios tipos de ciclos:
[<<etiqueta>>] LOOP aserciones END LOOP;
Es un ciclo incondicional que deberá ser terminado explícitamente con
una aserción EXIT
. La etiqueta opcional puede ser usada por las
aserciones EXIT
de ciclos anidados para especificar que nivel
de anidamiento debe ser terminado.
[<<etiqueta>>] WHILE expresion LOOP aserciones END LOOP;
Es un ciclo condicional que es ejecutado mientras que la evaluación de la expresión sea verdadera.
[<<etiqueta>>] FOR nombre IN [ REVERSE ] expresion .. expresion LOOP aserciones END LOOP;
Es un ciclo que itera sobre un rango de valores enteros. La variable
nombre
es creada automáticamente con tipo entero y existe sólo
al interior del ciclo. Las dos expresiones dan los límites inferior y
superior del rango en que habrá de ser evaluada la variable y sólo se
calculan al iniciar el ciclo. El paso de iteración siempre es uno.
[<<etiqueta>>] FOR registro | renglon IN clausula_de_seleccion LOOP aserciones END LOOP;
Al registro o renglón le será asignado cada uno de los renglones
resultantes de la cláusula de selección. Si el ciclo termina con una
aserción EXIT
, el último renglón asignado es aún accesible al
terminar el ciclo.
EXIT [ etiqueta ] [ WHEN expresion ];
Si no se dá una etiqueta, el ciclo interior será terminado y la acción
a continuación de la secuencia END LOOP
será ejecutada a
continuación. Si la etiqueta es dada, deberá ser la etiqueta del nivel
actual o de un nivel exterior de anidamiento de bloques de ciclo. En
este caso el ciclo invocado por la etiqueta termina y el control es
pasado a la siguiente aserción a continuación del final de ciclo o
bloque indicado por la etiqueta.