Was ist eine CASE-Erklärung?
Eine CASE-Anweisung ähnelt der IF-THEN-ELSIF-Anweisung, die eine Alternative basierend auf der Bedingung aus den verfügbaren Optionen auswählt.
- Die CASE-Anweisung verwendet "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 einem beliebigen Typ sein (Arithmetik, Variablen usw.)
- Jeder Alternative wird ein bestimmter vordefinierter Wert (Selektor) zugewiesen, und die Alternative mit einem Selektorwert, der dem Wert des bedingten Ausdrucks 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)WHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- In der obigen Syntax gibt der Ausdruck einen Wert zurück, der von einem beliebigen Typ sein kann (Variable, Zahl usw.).
- Jede 'WHEN'-Klausel wird als Alternative mit
und behandelt. - Die 'WHEN'-Klausel, die dem Wert des Ausdrucks entspricht, wird ausgewählt und der entsprechende
ausgeführt. - Der 'ELSE'-Block ist optional und enthält den
, der ausgeführt werden muss, wenn keine der Alternativen mit dem Ausdruckswert übereinstimmt. - Das 'ENDE' markiert das Ende der CASE-Anweisung und ist ein obligatorischer Bestandteil des CASE.
Beispiel 1: Arithmetische Berechnung mit Fall
In diesem Beispiel führen wir eine arithmetische Berechnung zwischen zwei Zahlen 55 und 5 durch.
DECLAREa NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='MULTIPLY’;BEGINdbms_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 Erläuterung:
- Codezeile 2: Deklarieren der Variablen 'a' als Datentyp 'NUMBER' und Initialisieren mit dem Wert '55'.
- Codezeile 3: Deklarieren der Variablen 'b' als Datentyp 'NUMBER' und Initialisieren mit dem Wert '5'.
- Codezeile 4: Deklarieren der Variablen 'arth_operation' als 'VARCHAR2'-Datentyp der Größe 20 und Initialisieren mit dem Wert' MULTIPLY '.
- Codezeile 6: Drucken der Anweisung "Programm gestartet".
- Codezeile 7: CASE überprüft den Wert des Ausdrucks. In diesem Fall ist der Wert der Variablen 'arth_operation' 'MULTIPLY'. Dieser Wert wird jetzt als Selektor für diese CASE-Anweisung behandelt.
- Codezeile 10: Die WHEN-Klausel mit dem Wert 'MULTIPLY' stimmt mit dem Auswahlwert überein, daher wählt der Controller diesen Aktionsblock aus und gibt die Meldung 'Multiplikation der Zahlen sind: 275' aus.
- Codezeile 13: Markiert das Ende der CASE-Anweisung.
- Codezeile 14: Drucken der Anweisung "Programm abgeschlossen".
Code-Ausgabe:
Program started.Multiplication of the numbers are: 275Program completed.
SEARCHED CASE Statement
Die SEARCHED CASE-Anweisung ähnelt der CASE-Anweisung. Anstatt den Selektor zur Auswahl der Alternative zu verwenden, wird in SEARCHED CASE der Ausdruck direkt in der WHEN-Klausel definiert.
- Die erste WHEN-Klausel, die die Bedingung erfüllt, wird ausgeführt, und der Controller überspringt die verbleibenden Alternativen.
Syntax:
CASEWHENTHEN action_blockl;WHEN THEN action_block2;WHEN THEN action_block3;ELSE action_block_default;END CASE;
- In der obigen Syntax hat jede WHEN-Klausel den separaten
und . - Die WHEN-Klausel, für die der Ausdruck TRUE zurückgibt, wird ausgeführt.
- Der 'ELSE'-Block ist optional und enthält den
, der ausgeführt werden muss, wenn keine der Alternativen erfüllt ist. - Das 'ENDE' 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 zwei Zahlen 55 und 5 durch.
DECLARE a NUMBER :=55;b NUMBER :=5;arth_operation VARCHAR2(20) :='DIVIDE';BEGINdbms_output.put_line(‘Program started.' );CASEWHEN 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 Erläuterung:
- Codezeile 2: Deklarieren der Variablen 'a' als Datentyp 'NUMBER' und Initialisieren mit dem Wert '55'.
- Codezeile 3: Deklarieren der Variablen 'b' als Datentyp 'NUMBER' und Initialisieren mit dem Wert '5'.
- Codezeile 4: Deklarieren der Variablen 'arth_operation' als 'VARCHAR2'-Datentyp der Größe 20 und Initialisieren mit dem Wert' DIVIDE '.
- Codezeile 6: Drucken der Anweisung "Programm gestartet".
- Codezeile 7: Die Anweisung SEARCHED CASE beginnt. Der Code von Zeile 8 bis Zeile 13 wird übersprungen, da der Auswahlwert (ADD, SUBTRACT, MULTIPLY) nicht mit dem Wert von 'arth_operation' übereinstimmt.
- Codezeile 14: Der WHEN-Klauselausdruck "arth_operation = 'DIVIDE'" ist erfüllt und der Ausdruck gibt TRUE zurück.
- Codezeile 15: Action_block der WHEN-Klausel wird ausgeführt und die Meldung 'Division of the numbers are: 11' wird gedruckt.
- Codezeile 17: Markiert das Ende der CASE-Anweisung.
- Codezeile 18: Drucken der Anweisung "Programm abgeschlossen".
Code-Ausgabe:
Program started.Division of the numbers are: 11Program completed.
Zusammenfassung
ART | BESCHREIBUNG | VERWENDUNG |
---|---|---|
FALL |
Ähnlich der IF-THEN-ELSIF-Anweisung. Ein 'SELECTOR' wird verwendet, um die Alternativen anstelle des Booleschen Ausdrucks auszuwählen. |
Wird verwendet, um mit 'SELECTOR' aus mehreren Alternativen auszuwählen. |
SUCHFALL |
CASE-Anweisung ohne tatsächlichen 'SELECTOR'. Stattdessen enthält es die tatsächliche Bedingung (die TRUE / FALSE ergibt), die die Alternativen auswählt. |
Wird verwendet, um meistens aus mehr als zwei Alternativen zu wählen. |