Oracle PL/SQL FOR LOOP con ejemplo
¿Qué es el bucle For?
La declaración "FOR LOOP" es más adecuada cuando desea ejecutar un código una cantidad conocida de veces en lugar de basarse en otras condiciones.
En este bucle, se especificarán el límite inferior y el límite superior y, siempre que la variable del bucle esté entre este rango, se ejecutará el bucle.
La variable de bucle es autoincremental, por lo que no se necesita ninguna operación de incremento explícita en este bucle. No es necesario declarar la variable de bucle, ya que se declara de forma implícita.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Explicación de sintaxis:
- En la sintaxis anterior, la palabra clave "FOR" marca el comienzo del bucle y "END LOOP" marca el final del bucle.
- La variable de bucle se evalúa cada vez antes de ejecutar la parte de ejecución.
- El bloque de ejecución contiene todo el código que debe ejecutarse. La parte de ejecución puede contener cualquier declaración de ejecución.
- La variable_bucle se declara implícitamente durante la ejecución de todo el ciclo, y el alcance de esta variable_bucle será solo dentro de este ciclo.
- Si la variable del bucle salió del rango, entonces el control saldrá del bucle.
- Se puede hacer que el bucle funcione en orden inverso agregando la palabra clave "REVERSE" antes del límite_inferior.
Ejemplo :En este ejemplo, vamos a imprimir números del 1 al 5 mediante la instrucción de bucle FOR. Para ello, ejecutaremos el siguiente código.
BEGIN dbms Qutput.put linef.Prp.gram started.' ); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP: dbms_output.put_iine('Program completed.'); END; /
Explicación del código:
- Línea de código 2: Imprimiendo el mensaje “Programa iniciado”.
- Línea de código 3: La palabra clave 'FOR' marca el comienzo del bucle y se declara loop_variable 'a'. Ahora tendrá el valor empezando del 1 al 5.
- Línea de código 5: Imprime el valor de 'a'.
- Línea de código 6: La palabra clave 'END LOOP' marca el final del bloque de ejecución.
- El código de la línea 5 continuará ejecutándose hasta que 'a' alcance el valor 6, ya que la condición fallará y el control SALIRÁ del bucle.
- Línea de código 7: Imprimir la declaración “Programa completado”
Bucles anidados
Las sentencias de bucle también se pueden anidar. El bucle exterior e interior pueden ser de diferentes tipos. En el bucle anidado, por cada valor de iteración del bucle externo, el bucle interno se ejecutará completamente.
LOOP -outer <execution block starts> LOOP — inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Explicación de sintaxis:
- En la sintaxis anterior, el bucle exterior tiene un bucle más dentro.
- Los bucles pueden ser de cualquier tipo y la parte funcional de ejecución es la misma.
Ejemplo :En este ejemplo, vamos a imprimir números del 1 al 3 utilizando la sentencia FOR. Cada número se imprimirá tantas veces como su valor. Para ello, ejecutaremos el siguiente código.
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; /
Explicación del código:
- Línea de código 2: Declarar la variable 'b' como tipo de datos 'NÚMERO'.
- Línea de código 4: Imprimiendo el mensaje “Programa iniciado”.
- Línea de código 5: La palabra clave 'FOR' marca el comienzo del bucle y se declara loop_variable 'a'. Ahora tendrá el valor empezando del 1 al 3.
- Línea de código 7: Restableciendo el valor de 'b' a '1' cada vez.
- Línea de código 8: Interior mientras bucle comprueba la condición a>=b.
- Línea de código 10: Imprime el valor de 'a' siempre que se cumpla la condición anterior.
- Línea de código 14: Imprimir la declaración “Programa completado”
Resumen
Red ISTE Loop | En bucle |
---|---|
Criterio de salida | Salir cuando el contador llegue al límite. |
Uso | Es bueno usarlo cuando se conoce el recuento de bucles que se ejecutarán. |