2008-11-22 6 views
10

Ich bin mit Oracle 10g und ich versuche, die Bedingungen in einer CASE-Anweisung zu "stapeln", wie ich es in C++ tun würde:Stapel Bedingungen in CASE-Anweisung in PL/SQL

case 1: 
case 2: 
    // instructions 
    break; 

dh mit derselbe Codeblock wurde für zwei verschiedene erfolgreiche Bedingungen ausgeführt.

Ich habe versucht:

WHEN 1, 2 THEN 
WHEN 1 OR 2 THEN 

... ohne Glück. Ist es überhaupt möglich?

EDIT - Full-Schnipsel

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; 

Erzeugt ein Ausdruck von falschen Typ ist Fehler

Antwort

23

Sie benötigen dieses Format verwenden:

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' ist hier möglich? – zygimantus

+0

Ja, Sie können 'ELSE' verwenden – vosicz

1

Es ist möglich, zu verwenden, IN wie 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; 
/