Oracle PL / SQL: Instrução CASE com exemplos

Índice:

Anonim

O que é a declaração CASE?

Uma instrução CASE é semelhante à instrução IF-THEN-ELSIF que seleciona uma alternativa com base na condição das opções disponíveis.

  • A instrução CASE usa "seletor" em vez de uma expressão booleana para escolher a sequência.
  • O valor da expressão na instrução CASE será tratado como um seletor.
  • A expressão pode ser de qualquer tipo (aritmética, variáveis, etc.)
  • Cada alternativa é atribuída com um determinado valor predefinido (seletor), e a alternativa com valor do seletor que corresponde ao valor da expressão condicional será executada.
  • Ao contrário de IF-THEN-ELSIF, a instrução CASE também pode ser usada em instruções SQL.
  • O bloco ELSE na instrução CASE contém a sequência que precisa ser executada quando nenhuma das alternativas foi selecionada.

Sintaxe:

CASE (expression)WHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • Na sintaxe acima, a expressão retornará um valor que pode ser de qualquer tipo (variável, número, etc.).
  • Cada cláusula 'WHEN' é tratada como uma alternativa que tem e .
  • A cláusula 'WHEN' que corresponde ao valor da expressão será selecionada e o correspondente será executado.
  • O bloco 'ELSE' é opcional e contém o que precisa ser executado quando nenhuma das alternativas corresponde ao valor da expressão.
  • O 'END' marca o fim da instrução CASE e é uma parte obrigatória do CASE.

Exemplo 1: cálculo aritmético usando caso

Neste exemplo, faremos cálculos aritméticos entre dois números 55 e 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;/

Explicação do código:

  • Linha de código 2: Declarando a variável 'a' como tipo de dados 'NUMBER' e inicializando-a com o valor '55'.
  • Linha de código 3: Declarando a variável 'b' como tipo de dados 'NUMBER' e inicializando-a com o valor '5'.
  • Linha de código 4: Declarando a variável 'arth_operation' como tipo de dados 'VARCHAR2' de tamanho 20 e inicializando-a com o valor 'MULTIPLY'.
  • Linha de código 6: Imprimindo a instrução "Programa iniciado".
  • Linha de código 7: CASE verifica o valor da expressão. Neste caso, o valor da variável 'arth_operation' é 'MULTIPLY'. Este valor será tratado como um seletor para esta instrução CASE agora.
  • Linha de código 10: A cláusula WHEN com valor 'MULTIPLY' corresponde ao valor do seletor, portanto, o controlador selecionará este action_block e imprimirá a mensagem 'Multiplicação dos números são: 275'.
  • Linha de código 13: marca o fim da instrução CASE.
  • Linha de código 14: Imprimindo a instrução "Programa concluído".

Saída de código:

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

Declaração SEARCHED CASE

A instrução SEARCHED CASE é semelhante à instrução CASE, em vez de usar o seletor para selecionar a alternativa, SEARCHED CASE terá diretamente a expressão definida na cláusula WHEN.

  • A primeira cláusula WHEN que satisfaz a condição será executada e o controlador ignorará as alternativas restantes.

Sintaxe:

CASEWHEN  THEN action_blockl;WHEN  THEN action_block2;WHEN  THEN action_block3;ELSE action_block_default;END CASE;
  • Na sintaxe acima, cada cláusula WHEN possui e separadas.
  • A cláusula WHEN para a qual a expressão retorna TRUE será executada.
  • O bloco 'ELSE' é opcional e contém o que precisa ser executado quando nenhuma das alternativas é satisfeita.
  • O 'END' marca o fim da instrução CASE e é uma parte obrigatória do CASE.

Exemplo 1: cálculo aritmético usando o caso pesquisado

Neste exemplo, faremos cálculos aritméticos entre dois números 55 e 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;/

Explicação do código:

  • Linha de código 2: Declarando a variável 'a' como tipo de dados 'NUMBER' e inicializando-a com o valor '55'.
  • Linha de código 3: Declarando a variável 'b' como tipo de dados 'NUMBER' e inicializando-a com o valor '5'.
  • Linha de código 4: Declarando a variável 'arth_operation' como tipo de dados 'VARCHAR2' de tamanho 20 e inicializando-a com o valor 'DIVIDE.'
  • Linha de código 6: Imprimindo a instrução "Programa iniciado".
  • Linha de código 7: a instrução SEARCHED CASE começa. O código da linha 8 à linha 13 é ignorado, pois o valor do seletor (ADD, SUBTRACT, MULTIPLY) não corresponde ao valor de 'arth_operation'.
  • Linha de código 14: A expressão da cláusula WHEN "arth_operation = 'DIVIDE'" é satisfeita e a expressão retorna TRUE.
  • Linha de código 15: Action_block da cláusula WHEN será executado, e a mensagem 'Divisão dos números são: 11' será impressa.
  • Linha de código 17: marca o fim da instrução CASE.
  • Linha de código 18: Impressão da declaração "Programa concluído".

Saída de código:

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

Resumo

MODELO DESCRIÇÃO USO

CASO

Semelhante à instrução IF-THEN-ELSIF. Um 'SELECTOR' é usado para escolher as alternativas em vez da expressão booleana.

Usado para selecionar entre várias alternativas usando 'SELECTOR'

CASO PESQUISADO

Instrução CASE sem 'SELECTOR' real. Em vez disso, ele contém a condição real (que avalia como TRUE / FALSE) que selecionará as alternativas.

Costumava escolher entre mais de duas alternativas, principalmente.