13

私は Oracle 10g を使用しており、C++ で行うように、CASE ステートメントで条件を「スタック」しようとしています。

case 1:
case 2:
    // instructions
    break;

つまり、2 つの異なる成功条件に対して同じコード ブロックが実行されます。

私はもう試した :

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

IN は SQL と同じように使用できます。

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 に答える