1、概述
1.1 场景
- 一般来说,对于 case when 条件语句,符合条件就执行,反之就不执行(如:Python、Java)
- 但 Oracle 中比较 特殊:
若 case 中不存在符合条件的语句,就报错
- 所以就导致这个问题虽然简单,但容易被忽略。
2、实例分析
DECLARE
i INTEGER := 6;
BEGIN
CASE
WHEN i <= 5 THEN
dbms_output.put_line('小于等于 5');
WHEN i <= 1 THEN
dbms_output.put_line('小于等于 1');
/* ELSE
-- 解决办法,增加一个 ELSE 分支
dbms_output.put_line('case 中无符合的 i');*/
END CASE;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(dbms_utility.format_error_backtrace);
dbms_output.put_line(SQLERRM);
END;
输出结果:
ORA-06512: 在 line 4
ORA-06592: 执行 CASE 语句时未找到 CASE