Condicionales en PL/SQL

En algunas oportunidades vamos a necesitar que nuestros programas tomen decisiones y ejecuten o no una sección del código según condiciones que previamente debemos establecer.

Tenemos estas formas de establecer las condiciones:

  • IF - THEN
  • IF - THEN - ELSE
  • IF - THEN - ELSIF - ELSE

IF - THEN

Vamos a evaluar si el estudiante obtiene una calificación mayor o igual ( >= ) que 50 para mostrar un mensaje por pantalla indicando que está aprobado, prueba cambiar el valor de la variable lv_calificacion para que veas que resultado dará :

DECLARE
   lv_calificacion NUMBER(3) := 80;
BEGIN
   IF lv_calificacion >= 50 THEN
      DBMS_OUTPUT.PUT_LINE ('Aprobó la asignatura');
   END IF;
END;

Resultado:

Aprobó la asignatura

Statement processed.

IF - THEN – ELSE

En esta oportunidad evaluaremos si la calificación es menor ( < ) que 50 dará un mensaje de reprobado, por el contrario dará un mensaje de aprobado, prueba cambiar el valor de la variable lv_calificacion para que veas que resultado te dará :

DECLARE
   lv_calificacion NUMBER(3) := 100;
BEGIN
   IF lv_calificacion < 50 THEN
      DBMS_OUTPUT.PUT_LINE('Reprobó la asignatura');
   ELSE
      DBMS_OUTPUT.PUT_LINE('Aprobó la asignatura');
   END IF;
END;

Resultado

Aprobó la asignatura

Statement processed.

IF - THEN - ELSIF - ELSE

Incrementaremos la complejidad de las condiciones añadiendo una más para mostrar otro mensaje, recuerda cambiar el valor de la variable calificación para que obtengas diferentes mensajes en pantalla

  1. Si la nota es menor que 50 indicará reprobado
  2. Si la nota está comprendida entre 50 y 64 ( ambos valores incluidos) indicará que la nota es aprobada de forma mediocre
  3. Si la nota está comprendida entre 65 y 75 ( ambos valores incluidos) indicará que la nota es aprobada pero deficiente
  4. Si la nota es mayor que 75 ( 75 no se incluye) indicará que la nota es buena.
  5. Si la nota es mayor que 100 ( 100 no se incluye) indicará que existe un error y la nota no es válida
DECLARE
   lv_calificacion NUMBER(3) := 50;
BEGIN
   -- condición de reprobado
   IF lv_calificacion < 50 THEN
       DBMS_OUTPUT.PUT_LINE('Reprobó la asignatura');
   -- condición de mediocre
   ELSIF (lv_calificacion >= 50) AND (lv_calificacion <= 64) THEN
      DBMS_OUTPUT.PUT_LINE('Aprobó la asignatura de forma mediocre');
   -- condición de deficiente
    ELSIF (lv_calificacion >= 65) AND (lv_calificacion <= 75) THEN
      DBMS_OUTPUT.PUT_LINE('Aprobó la asignatura de forma deficiente');
    -- condición de buena
   ELSIF (lv_calificacion > 75) AND (lv_calificacion <= 100) THEN
      DBMS_OUTPUT.PUT_LINE('Aprobó la asignatura con buena calificación');
   -- condición de error
   ELSE
      DBMS_OUTPUT.PUT_LINE('Hay un error con la calificación');
   END IF;
END;

Resultado

Aprobó la asignatura de forma mediocre

Statement processed.