sábado, 14 de junio de 2025

Curso de PL/SQL. Sentencia WHILE en PL/SQL de Oracle

La sentencia WHILE en PL/SQL es una estructura de control que permite ejecutar un bloque de código repetidamente mientras se cumpla una condición específica. Es muy útil cuando queremos realizar una serie de operaciones repetitivas hasta que se cumpla una condición de finalización.

¿Qué es la sentencia WHILE en PL/SQL?

La estructura WHILE se utiliza para ejecutar un bloque de código de manera repetitiva mientras una condición específica sea verdadera. Es una estructura de bucle controlado por condición, lo que significa que evalúa la condición al inicio de cada iteración. Si la condición es verdadera, el bloque de código se ejecuta; en caso contrario FALSE, el bucle se detiene y el flujo de control continúa con la siguiente instrucción después del bucle.

 

Sentencia WHILE en PL/SQL de Oracle

Sintaxis de WHILE en PL/SQL

La estructura básica de la sentencia WHILE en PL/SQL es la siguiente:

WHILE condición LOOP

    -- Instrucciones a ejecutar mientras la condición sea verdadera

END LOOP;

Componentes de la estructura WHILE

condición: Una expresión lógica (booleana) que se evalúa antes de cada iteración. Si esta condición es TRUE, el bucle continúa; si es FALSE, el bucle se detiene.

LOOP ... END LOOP: Define el bloque de código que se ejecutará en cada iteración.

Ejemplos Prácticos

A continuación, veremos algunos ejemplos para comprender cómo utilizar la sentencia WHILE en PL/SQL.

Ejemplo 1: Contador sencillo con WHILE

En este ejemplo, usaremos un contador que empieza en 1 y se incrementa en 1 en cada iteración del bucle hasta llegar a 5.

DECLARE

    contador NUMBER := 1;

BEGIN

    WHILE contador <= 5 LOOP

        DBMS_OUTPUT.PUT_LINE('Contador: ' || contador);

        contador := contador + 1;

    END LOOP;

END;

Explicación

1. Definimos una variable contador con un valor inicial de 1.

2. El bucle WHILE evalúa si el valor de contador es menor o igual a 5.

3. Si la condición es TRUE, imprime el valor actual del contador y luego lo incrementa en 1.

4. Una vez que contador supera 5, el bucle termina.

Este código imprimirá lo siguiente:

Contador: 1

Contador: 2

Contador: 3

Contador: 4

Contador: 5

Ejemplo 2: Sumar números del 1 al 10

Este ejemplo muestra cómo podemos utilizar WHILE para sumar los números del 1 al 10.

DECLARE

    suma NUMBER := 0;

    i NUMBER := 1;

BEGIN

    WHILE i <= 10 LOOP

        suma := suma + i;

        i := i + 1;

    END LOOP;

    DBMS_OUTPUT.PUT_LINE('La suma de los números del 1 al 10 es: ' || suma);

END;

Explicación

1. Inicializamos suma en 0, y i en 1.

2. El bucle se ejecuta mientras i sea menor o igual a 10.

3. En cada iteración, i se suma a suma, y luego incrementamos i en 1.

4. Cuando i alcanza 11, el bucle se detiene y el programa imprime el resultado.

Salida:

La suma de los números del 1 al 10 es: 55

Ejemplo 3: WHILE con una tabla de base de datos

En este ejemplo, supongamos que queremos iterar sobre los primeros 10 empleados de una tabla ficticia llamada EMPLEADOS, y queremos mostrar sus nombres. Vamos a utilizar WHILE para controlar el número de iteraciones.

DECLARE

    cursor empleados_cur IS

        SELECT first_name FROM empleados;

    nombre_empleado VARCHAR2(50);

    contador NUMBER := 1;

BEGIN

    OPEN empleados_cur;

    WHILE contador <= 10 LOOP

        FETCH empleados_cur INTO nombre_empleado;

        EXIT WHEN empleados_cur%NOTFOUND;  -- Salir del bucle si no hay más registros

        DBMS_OUTPUT.PUT_LINE('Empleado ' || contador || ': ' || nombre_empleado);

        contador := contador + 1;

    END LOOP;

    CLOSE empleados_cur;

END;

Explicación

1. Definimos un cursor empleados_cur para obtener los nombres de los empleados.

2. Inicializamos contador en 1.

3. Abrimos el cursor y utilizamos FETCH dentro del bucle WHILE para obtener un registro en cada iteración.

4. Con EXIT WHEN empleados_cur%NOTFOUND, salimos del bucle si ya no hay registros que obtener.

5. El contador limita el bucle a los primeros 10 empleados, evitando que el bucle continúe indefinidamente.

Este código imprimirá los nombres de los primeros 10 empleados.

Consideraciones Importantes al Usar WHILE en PL/SQL

1. Condiciones infinitas: Asegúrate de que la condición del WHILE eventualmente se volverá FALSE para evitar bucles infinitos. Una condición infinita puede hacer que el programa nunca termine.

2. Incrementos dentro del bucle: Si estás usando una variable de control (como el contador en los ejemplos), asegúrate de incrementarla dentro del bucle para que se cumpla la condición de salida.

3. Manejo de cursores: Cuando trabajes con cursores dentro de un WHILE, es importante recordar cerrar el cursor después de terminar el bucle.

Conclusión

La sentencia WHILE en PL/SQL es una poderosa herramienta para ejecutar operaciones repetitivas mientras se cumpla una condición. Nos permite iterar sobre valores, realizar cálculos, y manipular datos de forma controlada. Los ejemplos en este artículo te dan una base para entender y aplicar el bucle WHILE en tus proyectos con PL/SQL.