PL/SQL 中 CASE 语句中的堆栈条件
Posted
技术标签:
【中文标题】PL/SQL 中 CASE 语句中的堆栈条件【英文标题】:Stack conditions in CASE statement in PL/SQL 【发布时间】:2008-11-22 10:24:45 【问题描述】:我正在使用 Oracle 10g,我正在尝试在 CASE 语句中“堆叠”条件,就像我在 C++ 中所做的那样:
case 1:
case 2:
// instructions
break;
即为两个不同的成功条件执行相同的代码块。
我试过了:
WHEN 1, 2 THEN
WHEN 1 OR 2 THEN
...没有运气。 有可能吗?
编辑 - 完整的 sn-p
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;
生成一个表达式类型错误错误
【问题讨论】:
【参考方案1】:你需要使用这种格式:
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;
【讨论】:
ELSE
可以在这里吗?
是的,你可以使用ELSE
【参考方案2】:
可以像在 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;
/
【讨论】:
以上是关于PL/SQL 中 CASE 语句中的堆栈条件的主要内容,如果未能解决你的问题,请参考以下文章
从 PL/SQL 块中的 CASE 语句调用 Procs:面临的问题