CASE-Anweisung in PL / SQL - Wie funktioniert die Case Statement?

Inhaltsverzeichnis:

Anonim

Einführung in Case Statement in PL / SQL

Die CASE-Anweisung in PL / SQL ähnelt der IF-ELSEIF-Bedingung, in der verschiedene Bedingungen in einem Block aufgelistet sind und nur die Anweisungen ausgeführt werden, für die die Bedingung erfüllt ist. Die CASE-Anweisung entspricht dem Ausdruckswert anstelle eines Booleschen Ausdrucks. Der Ausdruck kann von einem beliebigen Datentyp sein und derselbe Datentyp muss in den Anweisungen verwendet werden. Jede Anweisung hat einen vordefinierten Wert. Wenn dieser Wert mit den im Selektorausdruck übergebenen Werten übereinstimmt, wird diese bestimmte Anweisung ausgeführt. In diesem Thema lernen wir die CASE-Anweisung in PL / SQL kennen.

Syntax

Nachdem Sie sich einen Überblick über eine CASE-Anweisung in PL / SQL verschafft haben, werfen wir einen Blick auf die Syntax der CASE-Anweisung.

CASE (expression)
WHEN THEN statement_l;
WHEN THEN statement_2;
WHEN THEN statement_3;
ELSE default_statement;
END CASE;

Code-Erklärung

In der obigen Syntax gibt der Ausdruck einen Wert eines beliebigen Datentyps zurück, alle Anweisungen haben einen vordefinierten eindeutigen Wert, der CASE-Ausdruck durchläuft alle Anweisungen, bis er die genaue Übereinstimmung erhält, die im Werteausdruck definiert ist, Wert_1, Wert_2 und Wert_3. Wenn der Case-Ausdruck die Übereinstimmung in der Anweisung nicht gefunden hat, wird die Standardanweisung ausgeführt.

Beachten Sie, dass der ELSE-Block optional ist. Wenn Sie nicht möchten, dass eine Standardanweisung ausgeführt wird, können Sie diese Anweisung überspringen. Der END-Fall ist ein obligatorischer Bestandteil des Falls.

Flussdiagramm

Wie funktioniert die Case-Anweisung in PL / SQL?

Obwohl die in Oracle 9i eingeführte CASE-Anweisung in den anderen Programmiersprachen weit verbreitet ist. Wie andere Programmiersprachen funktioniert auch die CASE-Anweisung auf ähnliche Weise.

Oracle 9i unterstützt zwei Arten von CASE-Anweisungen: die einfache CASE-Anweisung und die durchsuchte CASE-Anweisung

1. Einfache Fallbeschreibung

In der einfachen case-Anweisung wird eine Anweisung ausgeführt, wenn der Ausdruckswert mit der angegebenen Bedingung übereinstimmt. Diese Anweisungsbedingungen werden beim Schreiben der CASE-Anweisung vordefiniert. Sobald der Compiler eine Übereinstimmung findet, bricht er ab und verlässt nach Ausführung der Anweisung die Schleife, um weitere unnötige Ausdrucksauswertungen zu vermeiden. Wenn der Compiler keine Übereinstimmung gefunden hat, wird die Anweisung des Standardfalls ausgeführt. Der Standardfall ist nicht obligatorisch und kann übersprungen werden.

Syntax

CASE expression
WHEN condition_1 THEN
statements1
WHEN condition_2 THEN
statements2

ELSE
statements_else
END CASE;

Erläuterung

Wie bereits erwähnt, ist der ELSE-Fall optional. Der Compiler wertet zuerst den CASE-Ausdruck aus und vergleicht ihn dann mit der ersten Bedingung. Wenn die Bedingung mit dem Ausdruck übereinstimmt, wird Anweisung 1 ausgeführt, andernfalls wird Bedingung 2 überprüft und so weiter.

Sehen wir uns ein Beispiel in Echtzeit an, um das Konzept besser zu verstehen

SELECT Employee_Name,
CASE rating
WHEN 1 THEN 'Low'
WHEN 3 THEN 'High'
ELSE 'Medium' END
FROM Review;

Angenommen, es gibt eine Überprüfungstabelle, in der die Rückmeldungen der Mitarbeiter zum Jahresende aufgeführt sind, und Sie müssen den Namen des Mitarbeiters und die Bewertungen anzeigen. Anstelle von Zahlen, die Sie anzeigen möchten, ist "Niedrig" der Bewertung 1, "Hoch" der Bewertung 3, ansonsten "Mittel".

Die oben geschriebene Abfrage führt zu den folgenden Ergebnissen

Employee_Name CASECR

------– --

Bogart Low

Nolte Medium

Loren Medium

Gueney Hoch

2. Durchsuchte CASE-Anweisung

Die gesuchte CASE-Anweisung unterscheidet sich geringfügig von der einfachen CASE-Anweisung. In der Searched Case-Anweisung können Sie anstelle einer vordefinierten Bedingung eine Bedingung schreiben, die zur Laufzeit ausgewertet wird.

Sehen wir uns die Syntax der Searched CASE-Anweisung anhand dieses Beispiels an

CASE
WHEN salary >= 10000 AND salary <=20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 AND salary <= 40000 THEN
AllocateBonus(employee_id, 1000);
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary > 60000 THEN
AllocateBonus(employee_id, 250);
ELSE
AllocateBonus(employee_id, 0);
END CASE;

Angenommen, die Anforderung besteht darin, einem Mitarbeiter Boni basierend auf seiner / ihrer aktuellen Gehaltsspanne zuzuweisen. Wenn ein Mitarbeiter bestimmte Kriterien erfüllt, sollte die AllocateBonus-Funktion aufgerufen werden, die die employee_id und den Betragsbonus als Parameter verwendet.

Im obigen Beispiel haben wir verschiedene Gehaltsbereiche definiert und basierend darauf wird die AllocateBonus-Funktion aufgerufen, wenn das Gehalt in den angegebenen Bereich fällt.

Hinweis : In jeder Iteration wird nur eine Anweisung ausgeführt, obwohl mehrere Anweisungen die Kriterien erfüllen. Wenn Klauseln immer in der Reihenfolge von oben nach unten ausgewertet werden.

Tipps

Da die WHEN-Klausel in einer bestimmten Reihenfolge, dh von oben nach unten, ausgewertet wird, wird empfohlen, die Klauseln aufzulisten, die am wahrscheinlichsten zuerst auftreten oder häufiger vorkommen. Zusätzlich zu derjenigen einer WHEN-Klausel sollte ein teurer Ausdruck, der viel CPU-Speicher benötigt, zuletzt in der Reihenfolge vorhanden sein, um die Wahrscheinlichkeit einer Ausführung zu minimieren.

3. Verschachtelte CASE-Anweisung

Wie die verschachtelte IF-ELSE-Anweisung kann auch die CASE-Anweisung verschachtelt sein. Die Syntax bleibt gleich, nur wenn die äußere Bedingung die Kriterien erfüllt, durchläuft sie erneut eine Reihe von Anweisungen. Lassen Sie uns das oben beschriebene CASE-Beispiel improvisieren, um zu verstehen, wie die geschachtelte CASE-Anweisung funktioniert.

CASE
WHEN salary >= 10000 THEN
CASE
WHEN salary <= 20000 THEN
AllocateBonus(employee_id, 1500);
WHEN salary > 20000 THEN
AllocateBonus(employee_id, 1000);
END CASE;
WHEN salary > 40000 THEN
AllocateBonus(employee_id, 500);
WHEN salary < 10000 THEN
give_bonus(employee_id, 0);
END CASE;

Erläuterung

Wie Sie sehen, bleibt die Syntax dieselbe, nur wenn die Bedingung erneut erfüllt ist, durchlaufen Sie eine CASE-Anweisung, um die Allocate-Funktion endgültig auszuführen.

Schlussfolgerung - CASE-Anweisung in PL / SQL

Nachdem wir das Ende des Artikels erreicht haben, fassen wir die wichtigsten Punkte zusammen, die wir in diesem Artikel besprochen haben. Wir haben gesehen, was eine CASE-Anweisung in PL / SQL ist, die grundlegende Syntax anhand eines Beispiels gelernt. Wir haben die verschiedenen Arten von CASE-Anweisungen, dh simple CASE, Searched CASE und die Nested CASE-Anweisung, anhand eines Beispiels erläutert. Wir haben auch gelernt, wie wir die CASE-Anweisung durch die richtige Reihenfolge der WHEN-Klausel optimieren können.

Empfohlene Artikel

Dies ist eine Anleitung zur CASE-Anweisung in PL / SQL. Hier diskutieren wir, wie die Case-Anweisung in PL / SQL mit den Beispielen und der Syntax funktioniert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Was ist PL / SQL?
  2. PL / SQL-Befehle
  3. Verwendung von SQL
  4. Karriere in PL / SQL
  5. IF-Else-Anweisung in Matlab
  6. Schleifen in PL / SQL