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:面临的问题

PL/SQL 在 CASE 语句中返回一个列表

Oracle的PL_SQL的异常处理

PL/SQL条件控制

在oracle sql语句里有没有if...else...的用法,请各位大侠给个例子看看,灰常感谢!!

实验六:PL/SQL编程基础