Declaración de CASO en Oracle PL/SQL con ejemplos
⚡ Resumen inteligente
La instrucción CASE de PL/SQL selecciona una alternativa entre varias basándose en un selector, de forma similar a IF-THEN-ELSIF, pero más clara. Un CASE simple compara un valor de selector, mientras que un CASE con búsqueda evalúa una condición en cada cláusula WHEN y ejecuta la primera que sea verdadera.
¿Qué es una declaración CASE?
Una instrucción CASE es similar a la instrucción IF-THEN-ELSIF; selecciona una alternativa en función de una condición entre las opciones disponibles.
- Una instrucción CASE utiliza un "selector" en lugar de una expresión booleana para elegir la secuencia.
- El valor de la expresión en la instrucción CASE se trata como un selector.
- La expresión puede ser de cualquier tipo (aritmética, con variables, etc.).
- A cada alternativa se le asigna un valor predefinido (selector), y se ejecuta la alternativa cuyo valor de selector coincide con el valor de la expresión condicional.
- A diferencia de IF-THEN-ELSIF, la declaración CASE también se puede utilizar en declaraciones SQL.
- El bloque ELSE en una instrucción CASE contiene la secuencia que se ejecutará cuando no se seleccione ninguna de las alternativas.
Sintaxis
CASE (expression) WHEN <value1> THEN action_block1; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- En la sintaxis anterior, la expresión devuelve un valor que puede ser de cualquier tipo.
- Cada cláusula 'CUANDO' es una alternativa que tiene una y un .
- Se selecciona la cláusula 'WHEN' cuyo valor coincide con la expresión, y su se ejecuta.
- El bloque 'ELSE' es opcional y contiene la ejecutar cuando no haya coincidencias alternativas.
- 'END' marca el final de la declaración CASE y es una parte obligatoria de CASE.
Ejemplo 1: Cálculo aritmético usando CASE
En este ejemplo, realizamos un cálculo aritmético entre dos números, 55 y 5.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'MULTIPLY'; BEGIN dbms_output.put_line('Program started.'); CASE (arth_operation) WHEN 'ADD' THEN dbms_output.put_line('Addition of the numbers are: '|| a+b ); WHEN 'SUBTRACT' THEN dbms_output.put_line('Subtraction of the numbers are: '||a-b ); WHEN 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b ); WHEN 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are:'|| a/b); ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE; dbms_output.put_line('Program completed.'); END; /
Code Explicación
- Code línea 2: Declarar la variable 'a' como 'NUMBER' e inicializarla con el valor '55'.
- Code línea 3: Declarar la variable 'b' como 'NUMBER' e inicializarla con el valor '5'.
- Code línea 4: Declarar la variable 'arth_operation' como 'VARCHAR2' de tamaño 20 e inicializarla con el valor 'MULTIPLY'.
- Code línea 6: Imprimiendo el mensaje “Programa iniciado”.
- Code línea 7: CASE comprueba el valor de la expresión. Aquí, el valor de 'arth_operation' es 'MULTIPLY', que se trata como el selector.
- Code línea 10: La cláusula WHEN con valor 'MULTIPLY' coincide con el selector, por lo que el controlador selecciona este bloque de acción e imprime 'La multiplicación de los números es: 275'.
- Code Línea 13: Marca el final de la instrucción CASE.
- Code línea 14: Imprimiendo el mensaje “Programa completado”.
Code Resultado
Program started. Multiplication of the numbers are: 275 Program completed.
Declaración del CASO BUSCADO
La instrucción CASE buscada es similar a la instrucción CASE, pero en lugar de usar un selector para elegir la alternativa, la CASE buscada tiene la condición definida directamente en la cláusula WHEN.
- Se ejecuta la primera cláusula WHEN que satisface la condición, y el controlador omite las alternativas restantes.
Sintaxis
CASE WHEN <expression1> THEN action_block1; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- En la sintaxis anterior, cada cláusula WHEN tiene una separada y .
- Se ejecuta la cláusula WHEN para la cual la expresión devuelve TRUE.
- El bloque 'ELSE' es opcional y contiene la ejecutar cuando ninguna de las alternativas se satisface.
- 'END' marca el final de la declaración CASE y es una parte obligatoria de CASE.
Ejemplo 1: Cálculo aritmético utilizando CASE buscado
En este ejemplo, realizamos un cálculo aritmético entre dos números, 55 y 5.
DECLARE a NUMBER := 55; b NUMBER := 5; arth_operation VARCHAR2(20) := 'DIVIDE'; BEGIN dbms_output.put_line('Program started.'); CASE WHEN arth_operation = 'ADD' THEN dbms_output.put_line('Addition of the numbers are: '||a+b ); WHEN arth_operation = 'SUBTRACT' THEN dbms_output.put_line('Subtraction of the numbers are: '|| a-b); WHEN arth_operation = 'MULTIPLY' THEN dbms_output.put_line('Multiplication of the numbers are: '|| a*b ); WHEN arth_operation = 'DIVIDE' THEN dbms_output.put_line('Division of the numbers are: '|| a/b ); ELSE dbms_output.put_line('No operation action defined. Invalid operation'); END CASE; dbms_output.put_line('Program completed.'); END; /
Code Explicación
- Code línea 2: Declarar la variable 'a' como 'NUMBER' e inicializarla con el valor '55'.
- Code línea 3: Declarar la variable 'b' como 'NUMBER' e inicializarla con el valor '5'.
- Code línea 4: Declarar la variable 'arth_operation' como 'VARCHAR2' de tamaño 20 e inicializarla con el valor 'DIVIDE'.
- Code línea 6: Imprimiendo el mensaje “Programa iniciado”.
- Code Línea 7: Comienza la instrucción CASE buscada. Las cláusulas para ADD, SUBTRACLas operaciones T y MULTIPLY se omiten, ya que sus condiciones no coinciden con el valor de 'arth_operation'.
- Code línea 14: La expresión de la cláusula WHEN “arth_operation = 'DIVIDE'” se cumple y devuelve TRUE.
- Code línea 15: Se ejecuta el bloque de acción de la cláusula WHEN y se imprime 'La división de los números es: 11'.
- Code Línea 17: Marca el final de la instrucción CASE.
- Code línea 18: Imprimiendo el mensaje “Programa completado”.
Code Resultado
Program started. Division of the numbers are: 11 Program completed.
Comparación de CASO y CASO REGISTRADO
Ambas formas eligen una rama, pero difieren en cómo se selecciona dicha rama, como se resume a continuación.
| Tipo | Mareas Ideales para Lecciones | Uso |
|---|---|---|
| CASE | Similar a la SI-ENTONCES-ELSIF Declaración. Se utiliza un 'selector' para elegir la alternativa en lugar de una expresión booleana. | Se utiliza para seleccionar entre varias alternativas mediante un selector. |
| CASO BUSCADO | Una sentencia CASE sin selector real. En su lugar, contiene la condición (que se evalúa como VERDADERA o FALSA) que selecciona la alternativa. | Solía permitir elegir entre más de dos alternativas, principalmente en función de las condiciones del rango. |

