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.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: