Oracle PL / SQL: declaración CASE con ejemplos

Tabla de contenido:

Anonim

¿Qué es la declaración CASE?

Una sentencia CASE es similar a la sentencia IF-THEN-ELSIF que selecciona una alternativa basada en la condición de las opciones disponibles.

  • La sentencia CASE usa 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 tratará como un selector.
  • La expresión puede ser de cualquier tipo (aritmética, variables, etc.)
  • A cada alternativa se le asigna un cierto valor predefinido (selector), y se ejecutará la alternativa con el valor del selector que coincida con el valor de la expresión condicional.
  • A diferencia de IF-THEN-ELSIF, la sentencia CASE también se puede utilizar en sentencias SQL.
  • El bloque ELSE en la instrucción CASE contiene la secuencia que debe ejecutarse cuando no se seleccionó ninguna de las alternativas.

Sintaxis:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • En la sintaxis anterior, la expresión devolverá un valor que podría ser de cualquier tipo (variable, número, etc.).
  • Cada cláusula 'WHEN' se trata como una alternativa que tiene y .
  • Se seleccionará la cláusula 'WHEN' que coincide con el valor de la expresión y se ejecutará el correspondiente.
  • El bloque 'ELSE' es opcional y contiene el que debe ejecutarse cuando ninguna de las alternativas coincide con el valor de la expresión.
  • El 'END' marca el final de la instrucción CASE, y es una parte obligatoria de CASE.

Ejemplo 1: cálculo aritmético con mayúsculas y minúsculas

En este ejemplo, vamos a hacer un cálculo aritmético entre dos números 55 y 5.

DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_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;/

Explicación del código:

  • Línea de código 2: Declarar la variable 'a' como tipo de datos 'NUMBER' e inicializarla con el valor '55'.
  • Línea de código 3: declarar la variable 'b' como tipo de datos 'NÚMERO' e inicializarla con el valor '5'.
  • Línea de código 4: Declarar la variable 'operación_art' como tipo de datos 'VARCHAR2' de tamaño 20 e inicializarla con el valor 'MULTIPLY'.
  • Línea de código 6: Impresión de la declaración "Programa iniciado".
  • Línea de código 7: CASE comprueba el valor de la expresión. En este caso, el valor de la variable 'operación_art' es 'MULTIPLICAR'. Este valor se tratará ahora como un selector para esta instrucción CASE.
  • Línea de código 10: La cláusula WHEN con valor 'MULTIPLY' coincide con el valor del selector, por lo tanto, el controlador seleccionará este action_block e imprimirá el mensaje 'La multiplicación de los números son: 275'.
  • Línea de código 13: marca el final de la instrucción CASE.
  • Línea de código 14: Impresión de la declaración "Programa completado".

Salida de código:

Program started.Multiplication of the numbers are: 275Program completed.

Declaración de CASO BUSCADO

La sentencia SEARCHED CASE es similar a la sentencia CASE, en lugar de usar el selector para seleccionar la alternativa, SEARCHED CASE tendrá directamente la expresión definida en la cláusula WHEN.

  • Se ejecutará la primera cláusula WHEN que satisfaga la condición y el controlador omitirá las alternativas restantes.

Sintaxis:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • En la sintaxis anterior, cada cláusula WHEN tiene la y el separados.
  • Se ejecutará la cláusula WHEN para la que la expresión devuelve TRUE.
  • El bloque 'ELSE' es opcional y contiene el que debe ejecutarse cuando ninguna de las alternativas satisface.
  • El 'END' marca el final de la instrucción CASE y es una parte obligatoria de CASE.

Ejemplo 1: Cálculo aritmético usando el caso buscado

En este ejemplo, vamos a hacer un cálculo aritmético entre dos números 55 y 5.

DECLARE a NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='DIVIDE';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN 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;/

Explicación del código:

  • Línea de código 2: Declarar la variable 'a' como tipo de datos 'NUMBER' e inicializarla con el valor '55'.
  • Línea de código 3: Declarar la variable 'b' como tipo de datos 'NUMBER' e inicializarla con el valor '5'.
  • Línea de código 4: declarar la variable 'operación_art' como tipo de datos 'VARCHAR2' de tamaño 20 e inicializarla con el valor 'DIVIDIR'.
  • Línea de código 6: Impresión de la declaración "Programa iniciado".
  • Línea de código 7: Comienza la instrucción SEARCHED CASE. El código de la línea 8 a la línea 13 se omite ya que su valor de selector (AGREGAR, RESTA, MULTIPLICAR) no coincide con el valor de 'operación_art.
  • Línea de código 14: La expresión de la cláusula WHEN "operación_art = 'DIVIDE'" se satisface y la expresión devuelve VERDADERO.
  • Línea de código 15: Action_block de la cláusula WHEN se ejecutará y se imprimirá el mensaje 'La división de los números es: 11'.
  • Línea de código 17: marca el final de la instrucción CASE.
  • Línea de código 18: Impresión de la declaración "Programa completado".

Salida de código:

Program started.Division of the numbers are: 11Program completed.

Resumen

ESCRIBE DESCRIPCIÓN USO

CASO

Similar a la instrucción IF-THEN-ELSIF. Se utiliza un 'SELECTOR' para elegir las alternativas en lugar de la expresión booleana.

Se usa para seleccionar entre varias alternativas usando 'SELECTOR'

CASO BUSCADO

Sentencia CASE sin 'SELECTOR' real. En cambio, contiene la condición real (que se evalúa como VERDADERO / FALSO) que seleccionará las alternativas.

Se utiliza para elegir entre más de dos alternativas en su mayoría.