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.