在CASE语句中使用两种类型的表达式:简单和搜索。
简单CASE表达式
一个简单的CASE语句根据单个表达式的结果选择要执行的PL / SQL语句的几个序列中的哪一个。
简单CASE语句采用以下形式:
CASE expression WHEN result1 THEN statements1 WHEN result2 THEN statements2 ... ELSE statements_else END CASE;
实例
一个简单的CASE表达式从一个或多个选项中选择一个结果,并返回结果。
DECLARE grade CHAR(1) := 'A'; v_result VARCHAR2(20); BEGIN v_result := CASE grade WHEN 'A' THEN 'Excellent' WHEN 'B' THEN 'Very Good' WHEN 'C' THEN 'Good' END; DBMS_OUTPUT.PUT_LINE (v_result); END; /
上面的代码生成以下结果:
可选的ELSE子句与IF语句中的ELSE子句的工作方式相同。
如果选择器的值由WHEN子句覆盖,那么将执行ELSE子句。
如果未提供ELSE子句且没有WHEN子句匹配,则表达式将返回NULL。
搜索CASE表达式
搜索的CASE表达式允许您测试不同的条件,而不是将单个表达式与各种值进行比较。
搜索的CASE表达式没有选择器。
搜索的CASE语句评估布尔表达式的列表,当它找到一个计算结果为TRUE的表达式时,执行与该表达式相关联的一系列语句。
搜索的CASE语句具有以下形式:
CASE WHEN expression1 THEN statements1 WHEN expression2 THEN statements2 ... ELSE statements_else END CASE;
实例2
CASE WHEN salary >= 100 AND salary <=200 THEN raise_salary(employee_id, 1500); WHEN salary > 200 AND salary <= 400 THEN raise_salary(employee_id, 1000); WHEN salary > 400 THEN raise_salary(employee_id, 500); ELSE raise_salary(employee_id, 0); END CASE;
嵌套CASE语句
CASE语句可以嵌套为IF语句。
CASE WHEN salary >= 100 THEN CASE WHEN salary <= 200 THEN raise_salary(employee_id, 1500); WHEN salary > 400 THEN raise_salary(employee_id, 500); WHEN salary > 200 THEN raise_salary(employee_id, 1000); END CASE; WHEN salary < 100 THEN raise_salary(employee_id,0); END CASE;
查看更多关于Oracle PL / SQL CASE 语句的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did225681