Las expresiones CASE permiten utilizar la lógica IF ... THEN ... ELSE en las expresiones.
En una expresión CASE sencilla, CASE busca el primer par WHEN ... THEN para el que expr es igual a comparison_expr y, a continuación, devuelve return_expr. Si ninguno de los pares WHEN ... THEN cumple esta condición y existe una cláusula ELSE, CASE devuelve else_expr. De lo contrario, CASE devuelve un valor nulo.
En una expresión CASE buscada, CASEbusca de izquierda a derecha hasta que encuentra una incidencia de condition verdadera y, a continuación, devuelve return_expr. Si no se encuentra ninguna condition verdadera y existe una cláusula ELSE, CASE devuelve else_expr. De lo contrario, CASE devuelve un valor nulo.
Mismo valor que el argumento else_expression
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 ]...
expr es la expresión base que se está probando.
comparison_expr es la expresión en la que se prueba expr. Debe ser el mismo tipo de dato básico (numérico o de texto) que expr.
condition es una expresión condicional.
return_expr es el valor devuelto al encontrar una coincidencia o cuando la condición es verdadera.
La siguiente sentencia devuelve Low, Medium o High, según el valor de credit_limit:
CASE credit_limit WHEN 100 THEN 'Low' WHEN 5000 THEN 'High' ELSE 'Medium'
La siguiente sentencia devuelve el salario real si es mayor o igual que 2000 o devuelve 2000 si es menor que este valor.
CASE WHEN salary > 2000 THEN salary ELSE 2000 END
Copyright © 2003, 2007, Oracle. Todos los Derechos Reservados.