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. |