Over 10 years we helping companies reach their financial and branding goals. Onum is a values-driven SEO agency dedicated.

CONTACTS
Oracle

Guía completa: PL/SQL CASE Statement | Ejemplos y sintaxis

PL/SQL es un lenguaje de programación de base de datos que se utiliza para desarrollar aplicaciones en el entorno de Oracle. Una de las características más potentes de PL/SQL es la sentencia CASE, que permite controlar el flujo de un programa de manera eficiente y flexible. En este tutorial, te enseñaremos cómo utilizar la sentencia CASE de PL/SQL para tomar decisiones en tus programas y ejecutar diferentes secuencias de declaraciones según las condiciones que se cumplan.

Introducción

El lenguaje de programación PL/SQL es ampliamente utilizado en el entorno de Oracle para desarrollar aplicaciones de base de datos eficientes y escalables. Una de las características más poderosas de PL/SQL es la sentencia CASE, que permite controlar el flujo de un programa de manera flexible y eficiente.

En este tutorial, aprenderás cómo utilizar la sentencia CASE de PL/SQL para tomar decisiones en tus programas y ejecutar diferentes secuencias de declaraciones según las condiciones que se cumplan. La sentencia CASE elige una secuencia de declaraciones para ejecutar de entre varias secuencias posibles, lo que te brinda un control completo sobre el flujo de tu programa.

Existen dos tipos de sentencias CASE en PL/SQL: CASE simple y CASE buscado. Ambos tipos admiten una cláusula ELSE opcional. La sentencia CASE simple evalúa una expresión única y la compara con varios valores posibles, ejecutando las declaraciones asociadas al valor coincidente. Por otro lado, la sentencia CASE buscado evalúa múltiples expresiones booleanas y ejecuta la secuencia de declaraciones asociadas a la primera condición que se evalúa como VERDADERA.

En este artículo, exploraremos en detalle la sintaxis y el uso de ambas sentencias CASE en PL/SQL, junto con ejemplos prácticos que te ayudarán a comprender cómo implementar esta potente funcionalidad en tus propios programas.

Además, compararemos la sentencia CASE con la expresión CASE en PL/SQL para que puedas entender las diferencias y elegir la opción más adecuada para tus necesidades. ¡Prepárate para domar el flujo de tus programas con la sentencia CASE de PL/SQL!

Sentencia CASE simple

La sentencia CASE simple es una forma de realizar una selección condicional en PL/SQL. Esta sentencia evalúa una expresión única y compara su valor con una serie de valores posibles. A medida que se encuentra un valor coincidente, se ejecutan las declaraciones asociadas a ese valor.

La estructura básica de la sentencia CASE simple es la siguiente:

CASE selector
    WHEN valor_selector_1 THEN
        declaración_1;
    WHEN valor_selector_2 THEN
        declaración_2;
    ...
    ELSE
        declaraciones_else;
END CASE;

En primer lugar, se especifica la expresión selector que se evaluará contra los diferentes valores. Luego, se enumeran los diferentes valores_selector posibles, seguidos de las declaraciones que deben ejecutarse si el valor coincide con el valor del selector.

Es importante destacar que, si se encuentra un valor coincidente, se ejecutan las declaraciones asociadas y la sentencia CASE finaliza. Si no se encuentra ningún valor coincidente y se proporciona la cláusula ELSE, se ejecutarán las declaraciones_else. Si no se proporciona la cláusula ELSE y no hay coincidencia en ninguno de los valores, la sentencia CASE no ejecutará ninguna acción y el programa continuará con la siguiente instrucción.

Veamos un ejemplo para ilustrar cómo funciona la sentencia CASE simple en PL/SQL:

DECLARE
    dia_semana CHAR(10) := 'lunes';
BEGIN
    plsql case dia_semana
        WHEN 'lunes' THEN
            DBMS_OUTPUT.PUT_LINE('Es lunes, comienza una nueva semana.');
        WHEN 'martes' THEN
            DBMS_OUTPUT.PUT_LINE('Es martes, el trabajo está en marcha.');
        WHEN 'miércoles' THEN
            DBMS_OUTPUT.PUT_LINE('Es miércoles, ya estás a mitad de semana.');
        WHEN 'jueves' THEN
            DBMS_OUTPUT.PUT_LINE('Es jueves, el fin de semana está cerca.');
        WHEN 'viernes' THEN
            DBMS_OUTPUT.PUT_LINE('Es viernes, termina la semana laboral.');
        ELSE
            DBMS_OUTPUT.PUT_LINE('Es fin de semana, disfruta tu tiempo libre.');
    end case plsql;
END;

En este ejemplo, la variable dia_semana se inicializa con el valor ‘lunes’. La sentencia CASE evalúa la variable y busca un valor que coincida. Dado que el valor coincide con el primer WHEN, se ejecuta la declaración asociada y se muestra el mensaje «Es lunes, comienza una nueva semana.»

Recomendado:  Ordenar datos en Oracle con ORDER BY: SQL y PL/SQL

Si cambiamos el valor de la variable dia_semana a ‘martes’, se ejecutará la declaración asociada al segundo WHEN, mostrando el mensaje correspondiente. Este proceso se repite para cada valor posible hasta que se encuentra una coincidencia o se ejecutan las declaraciones ELSE.

La sentencia CASE simple es extremadamente útil cuando necesitas tomar decisiones basadas en una sola expresión y compararla con varios valores. Te permite controlar el flujo de tu programa de manera sencilla y legible.

Estructura y sintaxis

La sentencia CASE simple en PL/SQL sigue una estructura y sintaxis específicas que debes seguir para utilizarla correctamente en tus programas.

La estructura básica de la sentencia CASE simple es la siguiente:

CASE selector
    WHEN valor_selector_1 THEN
        declaración_1;
    WHEN valor_selector_2 THEN
        declaración_2;
    ...
    ELSE
        declaraciones_else;
END CASE;

Veamos cada elemento de la estructura en detalle:

  • La sentencia comienza con la palabra clave CASE.
  • Después de la palabra clave CASE, se especifica la expresión o variable que se evaluará. Esta expresión puede ser de cualquier tipo de datos válido en PL/SQL.
  • A continuación, se enumeran los diferentes valores_selector posibles que se compararán con la expresión evaluada. Estos valores pueden ser literales, variables o incluso expresiones. Cada valor_selector se especifica con la palabra clave WHEN.
  • Después de cada valor_selector, se especifica la declaracion que se ejecutará si el valor_selector coincide con el valor del selector. Estas declaraciones pueden ser múltiples líneas y pueden contener cualquier instrucción o sentencia válida en PL/SQL.
  • Opcionalmente, puedes utilizar la cláusula ELSE para especificar un conjunto de declaraciones_else que se ejecutarán si no hay ninguna coincidencia en los valores_selector. Estas declaraciones se ejecutarán solo si no se encuentra ninguna coincidencia en ninguno de los valores previamente especificados en los WHEN.
  • La sentencia CASE finaliza con la palabra clave END seguida de la palabra clave CASE.

Es importante tener en cuenta que la sentencia plsql case en PL/SQL no requiere puntos y comas (;) después de cada declaración o al final de la sentencia. Sin embargo, es recomendable utilizar puntos y comas para mantener un estilo de código consistente y legible.

Recuerda que solo se ejecutará la primera declaración asociada a un valor_selector que coincida con la expresión evaluada. El resto de las declaraciones se omitirán y la ejecución del programa continuará con la siguiente instrucción después de la sentencia CASE.

Asegúrate de utilizar una estructura adecuada y seguir la sintaxis correcta al utilizar la sentencia CASE simple en tus programas para asegurar un funcionamiento correcto y predecible.

Ejemplos de uso

A continuación, te proporcionaré algunos ejemplos prácticos de cómo utilizar la sentencia case in plsql en tus programas PL/SQL.

Ejemplo 1: Días de la semana

DECLARE
    dia_semana CHAR(10) := 'miércoles';
BEGIN
    plsql case dia_semana
        WHEN 'lunes' THEN
            DBMS_OUTPUT.PUT_LINE('Es el primer día de la semana.');
        WHEN 'martes' THEN
            DBMS_OUTPUT.PUT_LINE('Es el segundo día de la semana.');
        WHEN 'miércoles' THEN
            DBMS_OUTPUT.PUT_LINE('Es el tercer día de la semana.');
        WHEN 'jueves' THEN
            DBMS_OUTPUT.PUT_LINE('Es el cuarto día de la semana.');
        WHEN 'viernes' THEN
            DBMS_OUTPUT.PUT_LINE('Es el quinto día de la semana.');
        ELSE
            DBMS_OUTPUT.PUT_LINE('Es fin de semana.');
    END plsql case;
END;

En este ejemplo, la variable dia_semana se inicializa con el valor ‘miércoles’. La sentencia plsql case evalúa el valor de dia_semana y muestra un mensaje correspondiente según el día de la semana. En este caso, se muestra el mensaje «Es el tercer día de la semana.»

Recomendado:  Guía definitiva Oracle INSERT ALL Statement | SQL Insert Multiple Rows

Ejemplo 2: Clasificación de productos

DECLARE
    nombre_producto VARCHAR2(100) := 'Camiseta';
    categoria_producto VARCHAR2(50);
BEGIN
    case plsql nombre_producto
        WHEN 'Camiseta' THEN
            categoria_producto := 'Ropa';
        WHEN 'Libro' THEN
            categoria_producto := 'Literatura';
        WHEN 'Mesa' THEN
            categoria_producto := 'Muebles';
        ELSE
            categoria_producto := 'Desconocido';
    END case plsql;
    
    DBMS_OUTPUT.PUT_LINE('El producto ' || nombre_producto || ' pertenece a la categoría ' || categoria_producto);
END;

En este ejemplo, se utiliza la sentencia case statement in plsql para asignar una categoría a un producto. Si el valor de nombre_producto coincide con alguna de las opciones especificadas en los WHEN, se asigna la categoría correspondiente a la variable categoria_producto. Si no se encuentra ninguna coincidencia, se asigna la categoría ‘Desconocido’.

Estos ejemplos te dan una idea de cómo utilizar la sentencia plsql case en diferentes situaciones y cómo aprovechar su capacidad para tomar decisiones y ejecutar secuencias de declaraciones según diferentes valores. Recuerda que puedes adaptar y personalizar la sentencia case plsql según tus necesidades y requerimientos específicos.

Sentencia CASE buscado

La sentencia CASE buscado es otra forma de realizar una selección condicional en PL/SQL. A diferencia de la sentencia CASE simple, la sentencia CASE buscado evalúa múltiples expresiones booleanas y ejecuta la secuencia de declaraciones asociadas a la primera condición que se evalúa como VERDADERA.

La estructura básica de la sentencia CASE buscado es similar a la sentencia CASE simple:

CASE
    WHEN condición_1 THEN
        declaración_1;
    WHEN condición_2 THEN
        declaración_2;
    ...
    ELSE
        declaraciones_else;
END CASE;

En lugar de especificar una expresión única en la sentencia CASE simple, en la sentencia CASE buscado se utilizan múltiples condiciones. Cada condición es una expresión booleana que se evalúa y se compara con el valor VERDADERO. La primera condición que se evalúa como VERDADERA ejecuta las declaraciones asociadas y finaliza la sentencia CASE.

Es importante tener en cuenta que si ninguna de las condiciones se evalúa como VERDADERA y se proporciona la cláusula ELSE, se ejecutarán las declaraciones_else. Si no se proporciona la cláusula ELSE y no se cumple ninguna de las condiciones, la sentencia CASE no ejecutará ninguna acción y el programa continuará con la siguiente instrucción después de la sentencia CASE.

A continuación, te mostraré un ejemplo de cómo utilizar la sentencia CASE buscado en PL/SQL:

DECLARE
    calificación NUMBER := 85;
    mensaje VARCHAR2(50);
BEGIN
    plsql case
        WHEN calificación >= 90 THEN
            mensaje := 'Excelente';
        WHEN calificación >= 80 THEN
            mensaje := 'Bueno';
        WHEN calificación >= 70 THEN
            mensaje := 'Aceptable';
        ELSE
            mensaje := 'Reprobado';
    END case plsql;
    
    DBMS_OUTPUT.PUT_LINE('La calificación es ' || calificación || ' - ' || mensaje);
END;

En este ejemplo, se asigna una calificación a la variable calificación. La sentencia CASE evalúa las diferentes condiciones y asigna un mensaje correspondiente a la variable mensaje. En función del valor de calificación, se mostrará un mensaje adecuado. En este caso, la calificación es 85, por lo que el mensaje será ‘Bueno’.

Recomendado:  ¿Cómo seleccionar filas en Oracle con la cláusula BETWEEN?

La sentencia CASE buscado es una herramienta útil cuando necesitas evaluar múltiples condiciones y ejecutar diferentes declaraciones en base a esas condiciones. Te brinda una forma clara y concisa de tomar decisiones en tu programa y controlar su flujo de manera eficiente.

Reglas y funcionamiento

La sentencia CASE buscado en PL/SQL sigue ciertas reglas y tiene un funcionamiento específico que debes entender para utilizarla correctamente en tus programas.

Las reglas para la sentencia CASE buscado son las siguientes:

  • La sentencia comienza con la palabra clave CASE.
  • Se enumeran múltiples condiciones, cada una de las cuales es una expresión booleana que se evalúa y se compara con el valor VERDADERO. Estas condiciones se especifican con la palabra clave WHEN.
  • Después de cada condición, se especifica la declaración que se ejecutará si esa condición se evalúa como VERDADERA. Estas declaraciones pueden ser múltiples líneas y pueden contener cualquier instrucción o sentencia válida en PL/SQL.
  • Opcionalmente, puedes utilizar la cláusula ELSE para especificar un conjunto de declaraciones_else que se ejecutarán si ninguna de las condiciones se evalúa como VERDADERA. Estas declaraciones se ejecutan solo si no se cumple ninguna de las condiciones anteriores.
  • La sentencia CASE finaliza con la palabra clave END seguida de la palabra clave CASE.

Es importante tener en cuenta que solo se ejecutará la primera declaración asociada a una condición que se evalúa como VERDADERA. El resto de las condiciones y sus declaraciones asociadas se ignorarán y la ejecución del programa continuará con la siguiente instrucción después de la sentencia CASE.

También es importante tener en cuenta que la sentencia CASE buscado busca coincidencias exactas entre las condiciones y los valores evaluados. Si necesitas realizar comparaciones más complejas o utilizar operadores lógicos, puedes combinar la sentencia CASE buscado con expresiones lógicas y operadores en las condiciones.

Asegúrate de seguir las reglas y comprender el funcionamiento de la sentencia CASE buscado al utilizarla en tus programas para garantizar un comportamiento correcto y predecible.

Comparación con expresión CASE

Es importante destacar que, además de la sentencia CASE, en PL/SQL también existe la expresión CASE. Si bien ambas tienen funcionalidades similares, existen algunas diferencias clave entre ellas.

La sentencia CASE se utiliza para controlar el flujo de un programa y ejecutar diferentes secuencias de declaraciones según las condiciones que se cumplan. Por otro lado, la expresión CASE se utiliza para asignar un valor a una variable o una columna en una consulta. La expresión CASE puede aparecer en cualquier lugar donde se espera una expresión en PL/SQL, como una cláusula SELECT o una expresión de asignación.

Veamos un ejemplo para entender mejor la diferencia. Supongamos que queremos asignar una categoría a un producto según su precio:

DECLARE
    precio NUMBER := 100;
    categoria VARCHAR2(50);
BEGIN
    categoria := CASE
                    WHEN precio < 50 THEN 'Económico'
                    WHEN precio >= 50 AND precio < 100 THEN 'Medio'
                    ELSE 'Caro'
                END;
    
    DBMS_OUTPUT.PUT_LINE('El producto tiene una categoría ' || categoria);
END;

En este ejemplo, utilizamos la expresión CASE para asignar la categoría del producto a la variable categoria. Dependiendo del valor del precio, se asignará la categoría correspondiente (‘Económico’, ‘Medio’ o ‘Caro’) a la variable categoria. La expresión CASE se utiliza aquí para determinar el valor que se asignará.

Mientras que la sentencia CASE se usa para controlar el flujo de un programa y ejecutar diferentes secuencias de declaraciones, la expresión CASE se utiliza para asignar un valor a una variable o una columna en una consulta.

Es importante entender esta diferencia y utilizar la sentencia o la expresión CASE según el contexto y la necesidad específicos de tu programa.

Autor

osceda@hotmail.com

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *