Esta expresión usada en sentencias de consulta, hace las funciones de un IF-THEN-ELSE de programación de toda la vida, es decir, Oracle comprueba cada condición empezando por la primera de izquierda a derecha. Cuando una se cumple, la expresión devuelve el valor expuesto tras el "THEN" correspondiente. Si ninguna de las condiciones se satisface se devolvería lo expuesto en el "ELSE" (aunque esta parte no es obligatoria), en caso de no existir devolvería "NULL".
La sintaxis básica de CASE sería:
case when then
when then
...
else
end
Y un ejemplo podría ser:- Devolver las categorías basadas en el salario de los empleados
select sal, case when sal < 2000 then 'category 1'
when sal < 3000 then 'category 2'
when sal < 4000 then 'category 3'
else 'category 4'
end
from emp;
- Evaluar la edad de un empleado:
SELECT CASE lin_edad
When 25 Then lin_porcentaje:= 10;
When 30 Then lin_porcentaje:= 15;
When 35 Then lin_porcentaje:= 17;
Else lin_porcentaje:= 5;
END CASE;
- Veamos ahora el mismo ejemplo anterior pero aplicando la segunda forma del CASE, revisemos como se hace:
/* PL-SQL Packages en Oracle */
CASE
When lin_edad <= 25 Then lin_porcentaje:= 10;
When lin_edad >= 30 Then lin_porcentaje:= 15;
When lin_edad >= 35 and lin_edad <= 40 Then lin_porcentaje:= 17;
Else lin_porcentaje:= 5;
END CASE;
No hay comentarios:
Publicar un comentario