Las estructuras de control en PL/SQL permiten dirigir el flujo de ejecución de un programa. Estas estructuras son fundamentales para la lógica de programación y se dividen en tres categorías principales: estructuras de selección, estructuras de iteración y estructuras de salto.

  1. Estructuras de Selección

Las estructuras de selección permiten ejecutar diferentes bloques de código basados en condiciones específicas.

1.1. IF-THEN-ELSE

La estructura IF-THEN-ELSE se utiliza para ejecutar un bloque de código si una condición es verdadera y otro bloque si la condición es falsa.

Sintaxis:

IF condition THEN
    -- código a ejecutar si la condición es verdadera
ELSE
    -- código a ejecutar si la condición es falsa
END IF;

Ejemplo:

DECLARE
    v_salario NUMBER := 3000;
BEGIN
    IF v_salario > 2000 THEN
        DBMS_OUTPUT.PUT_LINE('Salario alto');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Salario bajo');
    END IF;
END;

1.2. CASE

La estructura CASE es útil cuando se necesita evaluar múltiples condiciones.

Sintaxis:

CASE
    WHEN condition1 THEN
        -- código a ejecutar si condition1 es verdadera
    WHEN condition2 THEN
        -- código a ejecutar si condition2 es verdadera
    ELSE
        -- código a ejecutar si ninguna condición es verdadera
END CASE;

Ejemplo:

DECLARE
    v_dia VARCHAR2(10) := 'Lunes';
BEGIN
    CASE v_dia
        WHEN 'Lunes' THEN
            DBMS_OUTPUT.PUT_LINE('Inicio de semana');
        WHEN 'Viernes' THEN
            DBMS_OUTPUT.PUT_LINE('Fin de semana');
        ELSE
            DBMS_OUTPUT.PUT_LINE('Día intermedio');
    END CASE;
END;

  1. Estructuras de Iteración

Las estructuras de iteración permiten ejecutar un bloque de código repetidamente.

2.1. LOOP

La estructura LOOP ejecuta un bloque de código indefinidamente hasta que se encuentra una instrucción EXIT.

Sintaxis:

LOOP
    -- código a ejecutar repetidamente
    EXIT WHEN condition;
END LOOP;

Ejemplo:

DECLARE
    v_contador NUMBER := 1;
BEGIN
    LOOP
        DBMS_OUTPUT.PUT_LINE('Contador: ' || v_contador);
        v_contador := v_contador + 1;
        EXIT WHEN v_contador > 5;
    END LOOP;
END;

2.2. WHILE LOOP

La estructura WHILE LOOP ejecuta un bloque de código mientras una condición sea verdadera.

Sintaxis:

WHILE condition LOOP
    -- código a ejecutar mientras la condición sea verdadera
END LOOP;

Ejemplo:

DECLARE
    v_contador NUMBER := 1;
BEGIN
    WHILE v_contador <= 5 LOOP
        DBMS_OUTPUT.PUT_LINE('Contador: ' || v_contador);
        v_contador := v_contador + 1;
    END LOOP;
END;

2.3. FOR LOOP

La estructura FOR LOOP ejecuta un bloque de código un número específico de veces.

Sintaxis:

FOR counter IN lower_bound..upper_bound LOOP
    -- código a ejecutar
END LOOP;

Ejemplo:

BEGIN
    FOR i IN 1..5 LOOP
        DBMS_OUTPUT.PUT_LINE('Iteración: ' || i);
    END LOOP;
END;

  1. Estructuras de Salto

Las estructuras de salto permiten alterar el flujo de ejecución de un programa.

3.1. GOTO

La instrucción GOTO transfiere el control a una etiqueta específica en el código.

Sintaxis:

GOTO label;
<<label>>
-- código a ejecutar

Ejemplo:

DECLARE
    v_contador NUMBER := 1;
BEGIN
    <<inicio>>
    DBMS_OUTPUT.PUT_LINE('Contador: ' || v_contador);
    v_contador := v_contador + 1;
    IF v_contador <= 5 THEN
        GOTO inicio;
    END IF;
END;

Ejercicios Prácticos

Ejercicio 1: IF-THEN-ELSE

Escribe un bloque PL/SQL que verifique si un número es positivo, negativo o cero y muestre un mensaje correspondiente.

Solución:

DECLARE
    v_numero NUMBER := -5;
BEGIN
    IF v_numero > 0 THEN
        DBMS_OUTPUT.PUT_LINE('El número es positivo');
    ELSIF v_numero < 0 THEN
        DBMS_OUTPUT.PUT_LINE('El número es negativo');
    ELSE
        DBMS_OUTPUT.PUT_LINE('El número es cero');
    END IF;
END;

Ejercicio 2: FOR LOOP

Escribe un bloque PL/SQL que imprima los números del 1 al 10.

Solución:

BEGIN
    FOR i IN 1..10 LOOP
        DBMS_OUTPUT.PUT_LINE('Número: ' || i);
    END LOOP;
END;

Ejercicio 3: WHILE LOOP

Escribe un bloque PL/SQL que imprima los números del 10 al 1 en orden descendente.

Solución:

DECLARE
    v_contador NUMBER := 10;
BEGIN
    WHILE v_contador >= 1 LOOP
        DBMS_OUTPUT.PUT_LINE('Número: ' || v_contador);
        v_contador := v_contador - 1;
    END LOOP;
END;

Conclusión

En esta sección, hemos explorado las estructuras de control en PL/SQL, incluyendo las estructuras de selección, iteración y salto. Estas estructuras son esenciales para dirigir el flujo de ejecución de un programa y son fundamentales para cualquier programador que trabaje con PL/SQL. Asegúrate de practicar los ejemplos y ejercicios proporcionados para reforzar tu comprensión de estos conceptos. En el próximo módulo, profundizaremos en el uso de cursores en PL/SQL.

© Copyright 2024. Todos los derechos reservados