Expressões CASE

As expressões CASE permitem que você use a lógicaIF ... THEN ... ELSE nas expressões.

Em uma expressão case simples, CASE procura o primeiro parWHEN...THEN para o qual expr é igual a comparison_expr, em seguida, ela retorna return_expr. Se nenhum par WHEN...THEN encontrar esta condição e existir uma cláusula ELSE, entãoCASE retorna else_expr. Caso contrário, CASE retorna nulo.

Em uma expressão CASE, CASE pesquisa da esquerda para a direita até encontrar uma ocorrência da condição que é verdadeira, e em seguida retorna return_expr. Se nenhumacondiçãofor encontrada como verdadeira e existir uma cláusula ELSE, CASE retorna else_expr. Caso contrário, CASE retorna nulo.

Valor de Retorno

Igual ao argumento else_expression

Sintaxe

CASE { simple_case_expression
     | searched_case_expression
     }
     [ ELSE else_expression ]
     END

simple_case_expression::=
     expr WHEN comparison_expr
          THEN return_expr
          [ WHEN comparison_expr
            THEN return_expr ]...

searched_case_expression::=
     WHEN condition THEN return_expr
     [ WHEN condition THEN return_expr ]...

Argumentos

expr é a expressão básica a ser testada.

comparison_expr é a expressão com a qual expr está sendo testado. Deve ter o mesmo tipo de dados básicos (numérico ou texto) que expr.

condition é uma expressão condicional.

return_expr é o valor retornado quando uma correspondência é encontrada ou a condição é verdadeira.

Exemplo

As instruções a seguir retornam Baixo,Médio ou Alto, dependendo do valor de credit_limit:

CASE credit_limit WHEN 100 THEN 'Low'
   WHEN 5000 THEN 'High'
   ELSE 'Medium'

A próxima instrução retorna o salário real, se for maior ou igual a 2000, ou 2000 se for menor que esse.

CASE WHEN salary > 2000 THEN salary
   ELSE 2000 END