Oracle PL / SQL: CASE-Anweisung mit Beispielen

Inhaltsverzeichnis:

Anonim

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)WHEN  THEN 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:

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