2008-11-22 11 views
10

Używam Oracle 10g i usiłuję "stosu" warunki w instrukcji CASE, podobnie jak byłoby zrobić w C++:warunki stosu w instrukcji CASE w PL/SQL

case 1: 
case 2: 
    // instructions 
    break; 

czyli posiadające ten sam blok kodu wykonany dla dwóch różnych warunków sukcesu.

Próbowałem:

WHEN 1, 2 THEN 
WHEN 1 OR 2 THEN 

... bez powodzenia. Czy to możliwe?

EDIT - Pełna fragment

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; 

Generuje wyrazem jest niewłaściwego typu błędu

Odpowiedz

23

Musisz użyć tego formatu:

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; 
+0

"ELSE" jest tutaj możliwe? – zygimantus

+0

Tak, możesz użyć 'ELSE' – vosicz

1

Istnieje możliwość korzystania IN podobnie jak w 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; 
/
Powiązane problemy