我正在使用Oracle 10g,我试图在CASE语句中“堆叠”条件,就像我在C ++中所做的那样:
case 1:
case 2:
// instructions
break;
即。为两个不同的成功条件执行相同的代码块。
我试过了:
WHEN 1, 2 THEN
WHEN 1 OR 2 THEN
......没有运气。 它甚至可能吗?
编辑 - 完整代码段
CASE v_n
WHEN (1 OR 2) THEN
dbms_output.put_line('Case 1 or 2');
WHEN 3 THEN
dbms_output.put_line('Case 3');
END CASE;
生成表达式错误类型错误
答案 0 :(得分:24)
您需要使用以下格式:
CASE
WHEN v_n = 1 OR v_n = 2 THEN
dbms_output.put_line('Case 1 or 2');
WHEN v_n = 3 THEN
dbms_output.put_line('Case 3');
END CASE;
答案 1 :(得分:1)
可以像在SQL中一样使用IN:
BEGIN
CASE
WHEN EXTRACT(YEAR FROM SYSDATE) IN (2015, 2016, 2017) THEN
dbms_output.put_line('Yes');
ELSE
dbms_output.put_line('No');
END CASE;
END;
/