Introdução à declaração de caso em PL / SQL

A instrução CASE no PL / SQL é semelhante à condição IF-ELSEIF, em que diferentes condições são listadas em um bloco e somente essas instruções são executadas para as quais satisfazem a condição. A instrução CASE corresponde ao valor da expressão em vez de uma expressão booleana. A expressão pode ser de qualquer tipo de dados e o mesmo tipo de dados deve ser usado nas instruções. Cada instrução possui um valor predefinido e, se esse valor corresponder aos valores passados ​​na expressão do seletor, essa instrução específica será executada. Neste tópico, vamos aprender sobre a instrução CASE no PL / SQL.

Sintaxe

Agora que você tem uma noção do que é uma instrução CASE no PL / SQL, vamos dar uma olhada na sintaxe da instrução CASE.

CASE (expression)
WHEN THEN statement_l;
WHEN THEN statement_2;
WHEN THEN statement_3;
ELSE default_statement;
END CASE;

Código Explicação

Na sintaxe acima, a expressão retornará um valor de qualquer tipo de dado, todas as instruções terão um valor exclusivo predefinido, a expressão CASE passará por todas as instruções até que obtenha a correspondência exata definida na expressão de valor, neste caso, Valor_1, Valor_2 e Valor_3. Se a expressão Case não encontrou a correspondência na instrução, a instrução padrão será executada.

Observe que o bloco ELSE é opcional e, se você não deseja que nenhuma instrução padrão seja executada, pode pular esta instrução. O caso END é uma parte obrigatória do caso.

Diagrama de fluxo

Como a declaração de caso funciona em PL / SQL?

Embora a instrução CASE introduzida no Oracle 9i tenha sido amplamente usada em outras linguagens de programação. Como outras linguagens de programação, a instrução CASE funciona de maneira semelhante.

O Oracle 9i suporta dois tipos de instruções CASE: instrução CASE simples e instrução CASE pesquisada

1. Declaração Simples de Caso

Na instrução de caso simples, uma instrução é executada se o valor da expressão corresponder à condição declarada. Essas condições da instrução são predefinidas ao escrever a instrução CASE. Quando o compilador encontra uma correspondência, ele quebra e sai do loop após executar a instrução, evitando mais avaliações de expressões desnecessárias. Se o compilador não encontrou nenhuma correspondência, ele executará a instrução do caso padrão. O caso padrão não é obrigatório e pode ser ignorado.

Sintaxe

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Explicação

Como mencionado anteriormente, o caso ELSE é opcional. O compilador primeiro avalia a expressão CASE e, em seguida, compara a expressão com a primeira condição. Se a condição corresponder à expressão 1, a instrução será executada, caso contrário, a condição 2 será verificada e assim por diante.

Vamos ver um exemplo em tempo real para entender o conceito mais claramente

SELECT Employee_Name,
CASE rating
WHEN 1 THEN 'Low'
WHEN 3 THEN 'High'
ELSE 'Medium' END
FROM Review;

Vamos supor que exista uma tabela de revisão que tenha detalhes de feedback de funcionários no final do ano e você precise mostrar o nome e as classificações do funcionário. Mas, em vez dos números que você deseja mostrar, Baixa da classificação é 1, Alta da classificação é 3, caso contrário, média.

A consulta escrita acima produzirá os resultados abaixo

Employee_Name CASECR

---------

Bogart Low

Nolte Medium

Loren Medium

Gueney High

2. Instrução CASE pesquisada

A instrução CASE pesquisada é um pouco diferente da instrução CASE simples. Na instrução de caso pesquisado, em vez de uma condição predefinida, você pode escrever uma condição que será avaliada no tempo de execução.

vamos dar uma olhada na sintaxe da instrução Searched CASE com este exemplo

CASE
WHEN salary >= 10000 AND salary <=20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 AND salary <= 40000 THEN
AllocateBonus(employee_id, 1000);
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary > 60000 THEN
AllocateBonus(employee_id, 250);
ELSE
AllocateBonus(employee_id, 0);
END CASE;

Suponha que o requisito seja alocar bônus a um funcionário com base em sua faixa salarial atual. Se um funcionário se enquadra em certos critérios, a função AllocateBonus deve ser chamada, o que leva employee_id e o valor do bônus como parâmetros.

No exemplo acima, definimos diferentes faixas salariais e com base nessa função AllocateBonus será chamada se o salário estiver dentro da faixa especificada.

Nota : Em cada iteração, uma e apenas uma instrução serão executadas, mesmo que várias instruções atendam aos critérios. Quando as cláusulas são sempre avaliadas em ordem, de cima para baixo.

Dicas

Como a cláusula WHEN é avaliada em uma determinada ordem, ou seja, de cima para baixo, é recomendável listar as cláusulas com maior probabilidade de ocorrerem primeiro ou a frequência é maior. Além da cláusula WHEN, existe uma expressão cara, isto é, que requer muita memória da CPU, por fim, a fim de minimizar as chances de execução.

3. Declaração CASE aninhada

Como a instrução IF-ELSE aninhada, a instrução CASE também pode ser aninhada. A sintaxe permanece a mesma: quando a condição externa satisfaz os critérios, ela passa novamente por uma série de instruções. Vamos improvisar o exemplo CASE acima pesquisado para entender como a instrução Nested CASE funciona.

CASE
WHEN salary >= 10000 THEN
CASE
WHEN salary <= 20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 THEN
AllocateBonus(employee_id, 1000);
END CASE;
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary < 10000 THEN
give_bonus(employee_id, 0);
END CASE;

Explicação

Como você vê, a sintaxe permanece a mesma, apenas quando a condição satisfaz, ela passa novamente por uma instrução CASE para finalmente executar a função Allocate.

Conclusão - Instrução CASE em PL / SQL

Agora que chegamos ao final do artigo, vamos resumir os pontos principais que discutimos neste artigo. Vimos o que é uma instrução CASE no PL / SQL, aprendemos a sintaxe básica com um exemplo. Discutimos os diferentes tipos de instrução CASE, isto é, CASE simples, CASO pesquisado e a instrução CASE aninhada com um exemplo. Também aprendemos como podemos otimizar a instrução CASE pela ordem correta da cláusula WHEN.

Artigos recomendados

Este é um guia para a instrução CASE em PL / SQL. Aqui discutiremos como a declaração de caso funciona em PL / SQL com os exemplos e a sintaxe. Você também pode consultar os seguintes artigos para saber mais -

  1. O que é PL / SQL?
  2. Comandos PL / SQL
  3. Usos do SQL
  4. Carreiras em PL / SQL
  5. Declaração IF-Else no Matlab
  6. Loops em PL / SQL