13

我正在使用 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;

生成表达式类型错误

4

2 回答 2

27

您需要使用这种格式:

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;
于 2008-11-22T11:04:48.013 回答
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;
/
于 2016-06-02T22:14:03.963 回答