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.