Les expressions CASE vous permettent d'utiliser la logique IF ... THEN ... ELSE dans les expressions.
Dans une expression CASE simple, CASE recherche la première paire WHEN ... THEN pour laquelle expr est égal à comparison_expr, puis renvoie return_expr. Si aucune des paires WHEN ... THEN ne remplit cette condition, et qu'une clause ELSE existe, CASE renvoie else_expr. Sinon, CASE renvoie NULL.
Dans une expression CASE avancée, CASE effectue des recherches de gauche à droite jusqu'à ce qu'elle trouve une occurrence de la condition qui soit True, puis renvoie return_expr. Si aucune condition n'est True, et qu'une clause ELSE existe, CASE renvoie else_expr. Sinon, CASE renvoie NULL.
Identique à l'argument 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 est l'expression de base testée.
comparison_expr est l'expression par rapport à laquelle expr est testée. Elle doit être du même type de données de base (numérique ou textuel) qu'expr.
condition correspond à une expression conditionnelle.
return_expr est la valeur renvoyée lorsqu'une correspondance est trouvée ou que la condition est True.
L'instruction suivante renvoie Low, Medium ou High selon la valeur de credit_limit :
CASE credit_limit WHEN 100 THEN 'Low' WHEN 5000 THEN 'High' ELSE 'Medium'
L'instruction suivante renvoie le salaire réel s'il est supérieur ou égal à 2 000, ou 2 000 dans le cas contraire.
CASE WHEN salary > 2000 THEN salary ELSE 2000 END
Copyright © 2003, 2007, Oracle. Tous droits réservés.