Условия стека в операторе CASE в PL / SQL - PullRequest
11 голосов
/ 22 ноября 2008

Я использую 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;

Создает выражение неправильного типа error

Ответы [ 2 ]

24 голосов
/ 22 ноября 2008

Вам необходимо использовать этот формат:

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 голос
/ 03 июня 2016

Можно использовать 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;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...