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.
- 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;
- 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:
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:
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:
Ejemplo:
- 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:
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:
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.
Curso de PL/SQL
Módulo 1: Introducción a PL/SQL
Módulo 2: Fundamentos de PL/SQL
- Estructura del Bloque PL/SQL
- Variables y Tipos de Datos
- Estructuras de Control
- Cursores
- Manejo de Excepciones