CASE-Anweisung in Oracle PL/SQL mit Beispielen
Was ist eine CASE-Anweisung?
Eine CASE-Anweisung รคhnelt einer IF-THEN-ELSIF-Anweisung, die eine Alternative basierend auf der Bedingung aus den verfรผgbaren Optionen auswรคhlt.
- Die CASE-Anweisung verwendet einen โSelektorโ anstelle eines booleschen Ausdrucks, um die Sequenz auszuwรคhlen.
- Der Wert des Ausdrucks in der CASE-Anweisung wird als Selektor behandelt.
- Der Ausdruck kann von beliebigem Typ sein (Arithmetik, Variablen usw.)
- Jeder Alternative wird ein bestimmter vordefinierter Wert (Selektor) zugewiesen, und die Alternative mit dem Selektorwert, der dem bedingten Ausdruckswert entspricht, wird ausgefรผhrt.
- Im Gegensatz zu IF-THEN-ELSIF kann die CASE-Anweisung auch in SQL-Anweisungen verwendet werden.
- Der ELSE-Block in der CASE-Anweisung enthรคlt die Sequenz, die ausgefรผhrt werden muss, wenn keine der Alternativen ausgewรคhlt wurde.
Syntax
CASE (expression) WHEN <valuel> THEN action_blockl; WHEN <value2> THEN action_block2; WHEN <value3> THEN action_block3; ELSE action_block_default; END CASE;
- In der obigen Syntax gibt der Ausdruck einen Wert zurรผck, der einen beliebigen Typ haben kann (Variable, Zahl usw.).
- Jede โWHENโ-Klausel wird als Alternative behandelt Und .
- Es wird die โWHENโ-Klausel ausgewรคhlt, die dem Wert des Ausdrucks entspricht, und die entsprechende wird durchgefรผhrt.
- Der Block โELSEโ ist optional und enthรคlt die das ausgefรผhrt werden muss, wenn keine der Alternativen mit dem Ausdruckswert รผbereinstimmt.
- Das โENDโ markiert das Ende der CASE-Anweisung und ist ein obligatorischer Bestandteil von CASE.
Beispiel 1: Arithmetische Berechnung mit Fall
In diesem Beispiel fรผhren wir eine arithmetische Berechnung zwischen den beiden Zahlen 55 und 5 durch.
DECLARE a NUMBER :=55; b NUMBER :=5; arth_operation VARCHAR2(20) :='MULTIPLYโ; BEGIN dbms_output.put_line(โProgram started.' ); CASE (arth_operation) WHEN โADDโ THEN dbms_output.put_line(โAddition of the numbers are: '|| a+b ); WHEN โSUBTRACT' THEN dbms_output.put_line(โSubtraction of the numbers are: '||a-b ); WHEN โMULTIPLY' THEN dbms_output.put_line(โMultiplication of the numbers are: '|| a*b ); WHEN โDIVIDE' THEN dbms_output.put_line(โDivision of the numbers are:'|| a/b); ELSE dbms_output.put_line(โNo operation action defined. Invalid operation'); END CASE; dbms_output.put_line(โProgram completed.' ); END; /
Code Erklรคrung
- Codezeile 2: Deklarieren Sie die Variable โaโ als Datentyp โNUMBERโ und initialisieren Sie sie mit dem Wert โ55โ.
- Codezeile 3: Deklarieren Sie die Variable โbโ als Datentyp โNUMBERโ und initialisieren Sie sie mit dem Wert โ5โ.
- Codezeile 4: Deklarieren der Variable โarth_operationโ als โVARCHAR2โ-Datentyp der Grรถรe 20 und Initialisieren mit dem Wert โMULTIPLYโ.
- Codezeile 6: Ausdruck der Anweisung โProgramm gestartetโ.
- Codezeile 7: CASE prรผft den Wert des Ausdrucks. In diesem Fall ist der Wert der Variable 'arth_operation' 'MULTIPLY'. Dieser Wert wird nun als Selektor fรผr diese CASE-Anweisung behandelt.
- Codezeile 10: Die WHEN-Klausel mit dem Wert โMULTIPLYโ stimmt mit dem Selektorwert รผberein, daher wรคhlt der Controller diesen Aktionsblock aus und druckt die Meldung โDie Multiplikation der Zahlen ergibt: 275โ.
- Codezeile13: Markiert das Ende der CASE-Anweisung.
- Codezeile14: Ausdruck der Aussage โProgramm abgeschlossenโ.
Codeausgabe
Program started. Multiplication of the numbers are: 275 Program completed.
SEARCHED CASE-Anweisung
Die SEARCHED CASE-Anweisung รคhnelt der CASE-Anweisung. Anstatt den Selektor zur Auswahl der Alternative zu verwenden, wird bei SEARCHED CASE direkt der in der WHEN-Klausel definierte Ausdruck verwendet.
- Die erste WHEN-Klausel, die die Bedingung erfรผllt, wird ausgefรผhrt und der Controller รผberspringt die verbleibenden Alternativen.
Syntax
CASE WHEN <expression1> THEN action_blockl; WHEN <expression2> THEN action_block2; WHEN <expression3> THEN action_block3; ELSE action_block_default; END CASE;
- In der obigen Syntax hat jede WHEN-Klausel das separate Und .
- Die WHEN-Klausel, fรผr die der Ausdruck TRUE zurรผckgibt, wird ausgefรผhrt.
- Der Block โELSEโ ist optional und enthรคlt die Das muss ausgefรผhrt werden, wenn keine der Alternativen zufriedenstellend ist.
- Das โENDโ markiert das Ende der CASE-Anweisung und ist ein obligatorischer Bestandteil von CASE.
Beispiel 1: Arithmetische Berechnung mit gesuchtem Fall
In diesem Beispiel fรผhren wir eine arithmetische Berechnung zwischen den beiden Zahlen 55 und 5 durch.
DECLARE a NUMBER :=55; b NUMBER :=5; arth_operation VARCHAR2(20) :='DIVIDE'; BEGIN dbms_output.put_line(โProgram started.' ); CASE WHEN arth_operation = 'ADD' THEN dbms_output.put_line(โAddition of the numbers are: '||a+b ); WHEN arth_operation = โSUBTRACT' THEN dbms_output.put_line(โSubtraction of the numbers are: '|| a-b); WHEN arth_operation = โMULTIPLYโ THEN dbms_output.put_line(โMultiplication of the numbers are: '|| a*b ); WHEN arth_operation = โDIVIDE' THEN dbms_output.put_line(โDivision of the numbers are: '|| a/b ): ELSE dbms_output.put_line(โNo operation action defined. Invalid operation'); END CASE; dbms_output.put_line(โProgram completed.' ); END; /
Code Erklรคrung
- Codezeile 2: Deklarieren Sie die Variable โaโ als Datentyp โNUMBERโ und initialisieren Sie sie mit dem Wert โ55โ.
- Codezeile 3: Deklarieren Sie die Variable โbโ als Datentyp โNUMBERโ und initialisieren Sie sie mit dem Wert โ5โ.
- Codezeile 4: Deklarieren der Variable โarth_operationโ als โVARCHAR2โ-Datentyp der Grรถรe 20 und Initialisieren mit dem Wert โDIVIDEโ.
- Codezeile 6: Ausdruck der Anweisung โProgramm gestartetโ.
- Codezeile 7: Die SEARCHED CASE-Anweisung beginnt. Der Code von Zeile 8 bis Zeile 13 wird รผbersprungen, da ihr Selektorwert (ADD, SUBTRACT, MULTIPLY) nicht mit dem Wert von โarth_operationโ รผbereinstimmt.
- Codezeile 14: Der WHEN-Klausel-Ausdruck โarth_operation = 'DIVIDE'โ wurde erfรผllt und der Ausdruck gibt TRUE zurรผck.
- Codezeile 15: Der Action_block der WHEN-Klausel wird ausgefรผhrt und die Meldung โDivision der Zahlen ist: 11โ wird ausgedruckt.
- Codezeile 17: Markiert das Ende der CASE-Anweisung.
- Codezeile 18: Ausdruck der Aussage โProgramm abgeschlossenโ.
Codeausgabe
Program started. Division of the numbers are: 11 Program completed.
Zusammenfassung
| TYP | BESCHREIBUNG | ANWENDUNG |
|---|---|---|
| CASE | รhnlich WENN-DANN-ELSIF Stellungnahme. Anstelle eines booleschen Ausdrucks wird ein โSELECTORโ zur Auswahl der Alternativen verwendet. | Wird verwendet, um mit โSELECTORโ aus mehreren Alternativen auszuwรคhlen. |
| Gesuchter Fall | CASE-Anweisung ohne tatsรคchlichen โSELECTORโ. Stattdessen enthรคlt es die tatsรคchliche Bedingung (die als TRUE/FALSE ausgewertet wird), die die Alternativen auswรคhlt. | Wird meistens zur Auswahl aus mehr als zwei Alternativen verwendet. |
