为了简化PL/SQL的控制流程,从9i开发,PL/SQL提供了类似于C语言SWITCH语句的CASE语句。
从表现形式来看,CASE语句有两种语法。
语法一:
searched_case_statement ::=
[ <<label_name>> ]
CASE { WHEN boolean_expression THEN {statement;} ... }...
[ ELSE {statement;}... ]
END CASE [ label_name ];
语法二:
simple_case_statement ::=
[ <<label_name>> ]
CASE case_operand
{ WHEN when_operand THEN {statement;} ... }...
[ ELSE {statement;}... ]
END CASE [ label_name ];
这里的label_name是作为标签使用的,可忽略。
DECODE的功能相当于第二种语法的功能。
我们用两种不同的语法分别来表达前面的例子。
语法一表达:
CASE
WHEN v_grade = 'A' THEN
v_result := 'Excellent';
WHEN v_grade = 'B' THEN
v_result := 'Very Good';
WHEN v_grade = 'C' THEN
v_result := 'Good';
WHEN v_grade = 'D' THEN
v_result := 'Fair';
WHEN v_grade = 'F' THEN
v_result := 'Poor';
ELSE
v_result := 'No such grade';
END CASE;
(编辑:aniston)
|