Ответ 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;
Я использую Oracle 10g, и я пытаюсь "стекать" условия в выражении CASE, как я бы сделал в С++:
case 1:
case 2:
// instructions
break;
то есть. с тем же кодом кода, выполненным для двух разных успешных условий.
Я пробовал:
WHEN 1, 2 THEN
WHEN 1 OR 2 THEN
... без везения. Возможно ли это?
EDIT - полный фрагмент
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;
Генерация выражения неверно.
Вам необходимо использовать этот формат:
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;
Можно использовать 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;
/