Oracle PL/SQL FOR LOOP con ejemplo
⚡ Resumen inteligente
Oracle El bucle FOR de PL/SQL ejecuta un bloque de código un número determinado de veces entre un límite inferior y uno superior. La variable del bucle se declara implícitamente y se incrementa automáticamente, por lo que no se necesita un contador manual. La palabra clave REVERSE permite que el bucle cuente hacia atrás.
¿Qué es un bucle FOR?
La instrucción "FOR LOOP" es la más adecuada cuando se desea ejecutar código un número conocido de veces, en lugar de en función de alguna otra condición.
En este bucle, se especifican un límite inferior y un límite superior, y mientras la variable del bucle se encuentre dentro de este rango, el bucle se ejecuta.
La variable del bucle es autoincremental, por lo que no se requiere ninguna operación de incremento explícita. No es necesario declarar la variable del bucle, ya que se declara implícitamente.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Explicación de sintaxis:
- La palabra clave 'FOR' marca el inicio del bucle y 'END LOOP' marca el final.
- La variable del bucle se evalúa cada vez antes de ejecutar la parte ejecutable.
- El bloque de ejecución contiene todo el código que necesita ejecutarse y puede contener cualquier instrucción ejecutable.
- La variable loop_variable se declara implícitamente durante la ejecución del bucle, y su ámbito de aplicación se limita al interior del bucle.
- Cuando la variable del bucle sale del rango permitido, el control finaliza el bucle.
- El bucle puede funcionar en orden inverso añadiendo la palabra clave 'REVERSE' antes de lower_limit.
Ejemplo 1: En este ejemplo, imprimimos los números del 1 al 5 utilizando un bucle FOR.
BEGIN dbms_output.put_line('Program started.'); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP; dbms_output.put_line('Program completed.'); END; /
Code Explicación:
- Code línea 2: Imprimiendo el mensaje “Programa iniciado”.
- Code línea 3: La palabra clave 'FOR' marca el inicio del bucle y se declara la variable de bucle 'a'. Ahora toma valores del 1 al 5.
- Code línea 5: Imprime el valor de 'a'.
- Code línea 6: La palabra clave 'END LOOP' marca el final del bloque de ejecución.
- La línea 5 continúa ejecutándose hasta que 'a' alcanza el valor 6, momento en el que la condición falla y el control sale del bucle.
- Code línea 7: Imprimiendo el mensaje “Programa completado”.
Bucles anidados
Las sentencias de bucle también pueden estar anidadas. Los bucles externo e interno pueden ser de diferentes tipos. En un bucle anidado, por cada iteración del bucle externo, el bucle interno se ejecuta por completo.
LOOP --outer <execution block starts> LOOP --inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Explicación de sintaxis:
- El bucle exterior tiene otro bucle en su interior.
- Los bucles pueden ser de cualquier tipo, y la funcionalidad de ejecución es la misma.
Ejemplo 1: En este ejemplo, imprimimos los números del 1 al 3 usando un bucle FOR. Cada número se imprime tantas veces como su valor.
DECLARE b NUMBER; BEGIN dbms_output.put_line('Program started'); FOR a IN 1..3 LOOP b:= 1; WHILE (a>=b) LOOP dbms_output.put_line(a); b:= b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Explicación:
- Code línea 2: Declarar la variable 'b' como tipo de dato 'NUMBER'.
- Code línea 4: Imprimiendo el mensaje “Programa iniciado”.
- Code línea 5: La palabra clave 'FOR' marca el inicio del bucle y se declara la variable de bucle 'a'. Ahora toma valores del 1 al 3.
- Code línea 7: Restableciendo el valor de 'b' a '1' cada vez.
- Code línea 8: El interior mientras bucle comprueba la condición a>=b.
- Code línea 10: Imprime el valor de 'a' siempre que se cumpla la condición anterior.
- Code línea 14: Imprimiendo el mensaje “Programa completado”.
Bucle FOR y bucle FOR inverso
Por defecto, un bucle FOR cuenta hacia arriba desde el límite inferior hasta el límite superior. Agregar la palabra clave REVERSE hace que cuente hacia abajo mientras mantieneping Los límites en el mismo orden. Ambas formas se muestran juntas a continuación para que la diferencia quede clara.
| Formulario | Encabezado | Orden de valores |
|---|---|---|
| ascendente | PARA UN EN 1 .. 5 | 1, 2, 3, 4, 5 |
| descendente | PARA UN EN REVERSO 1 .. 5 | 5, 4, 3, 2, 1 |
Tenga en cuenta que incluso con REVERSE, el límite inferior se sigue escribiendo antes que el límite superior; solo cambia la dirección de la iteración. Para bucles cuyo conteo no se conoce de antemano, el bucle básico es la mejor opcion





