Oracle PL/SQL LOOP mit Beispiel

Was sind Schleifen?

Schleifen ermöglichen es, einen bestimmten Teil des Codes in einem Programm so oft auszuführen, wie gewünscht.

In diesem Tutorial sehen wir uns das Schleifenkonzept in PL/SQL und den Kontrollfluss in Schleifen an.

Einführung in das Loops-Konzept

Das Loops-Konzept bietet Folgendeswing Vorteil beim Codieren.

  • Wiederverwendbarkeit von Code
  • Reduzierte Codegröße
  • Einfacher Kontrollfluss
  • Reduzierte Komplexity

Das folgende Diagramm zeigt das Looping-Konzept bildlich

Oracle PL/SQL-SCHLEIFE

Im obigen Diagramm wird die Schleifenbedingung überprüft und solange die Schleifenbedingung erfüllt ist, wird der Ausführungsblock ausgeführt.

In jeder Iteration sollte sich die Schleifenzählervariable, die tatsächlich über die Schleifenbedingung entscheidet, ändern, damit die Steuerung die Schleife verlässt. In manchen Fällen handelt es sich bei dieser Schleifenzählervariablen um einen Inkrementierungs-/Dekrementierungsoperator für eine vordefinierte Zählung, und in manchen Fällen handelt es sich um eine Suchbedingung, die den Block so lange ausführt, bis er diese erfüllt.

Schleifensteuerungsanweisungen

Bevor Sie das Schleifenkonzept erlernen, müssen Sie sich unbedingt mit Schleifenkontrollanweisungen vertraut machen. Schleifenkontrollanweisungen sind solche, die tatsächlich den Ausführungsfluss innerhalb der Schleife steuern. Nachfolgend finden Sie eine detaillierte Beschreibung der Schleifenkontrollanweisungen.

WEITER

Dieses Schlüsselwort sendet eine Anweisung an die PL/SQL-Engine, dass die PL/SQL-Engine jedes Mal, wenn sie in der Schleife auf dieses Schlüsselwort trifft, den verbleibenden Code im Ausführungsblock des Codes überspringt und die nächste Iteration sofort beginnt. Dies wird hauptsächlich verwendet, wenn der Code innerhalb der Schleife für bestimmte Iterationswerte übersprungen werden soll.

EXIT / EXIT WANN

Dieses Schlüsselwort sendet eine Anweisung an die PL/SQL-Engine, dass die PL/SQL-Engine jedes Mal, wenn sie auf dieses Schlüsselwort trifft, die aktuelle Schleife sofort verlässt. Wenn die PL/SQL-Engine in einer verschachtelten Schleife auf EXIT stößt, verlässt sie die Schleife, in der sie definiert wurde, d nicht von der äußeren Schleife. Auf „EXIT WHEN“ folgt ein Ausdruck, der ein boolesches Ergebnis liefert. Wenn das Ergebnis WAHR ist, wird die Steuerung beendet.

GOTO

Diese Anweisung übergibt die Kontrolle an die gekennzeichnete Anweisung („GOTO ;“). Das hat folgendeswing Einschränkungen

  • Die Übertragung der Kontrolle kann nur innerhalb der Unterprogramme erfolgen.
  • Die Übertragung der Kontrolle vom Ausnahmebehandlungsteil auf den Ausführungsteil ist nicht möglich

Die Verwendung dieser Anweisung wird nicht empfohlen, es sei denn, es gibt keine anderen Alternativen, da die Rückverfolgbarkeit der Codesteuerung im Programm aufgrund der Übertragung der Kontrolle von einem Teil auf einen anderen Teil sehr schwierig sein wird.

Arten von Schleifen in PL/SQL

PL / SQL bietet Following drei Arten von Schleifen

Grundlegende Schleifenanweisung

Diese Schleifenanweisung ist die einfachste Schleifenstruktur in PL/SQL. Der Ausführungsblock beginnt mit dem Schlüsselwort „LOOP“ und endet mit dem Schlüsselwort „END LOOP“.

Die Exit-Bedingung sollte innerhalb dieses Ausführungsblocks angegeben werden, damit der Austritt aus der Schleife gesteuert wird.

Um die Schleife zu verlassen, muss im Ausführungsteil explizit das Schlüsselwort EXIT angegeben werden.

Grundlegende Schleifenanweisung

 LOOP
<execution block starts>
<EXIT condition based on developer criteria> 
<execution_block_ends>
END LOOP;

Syntaxerklärung:

  • In der obigen Syntax markiert das Schlüsselwort „LOOP“ den Anfang der Schleife und „END LOOP“ das Ende der Schleife.
  • Der Ausführungsblock enthält den gesamten Code, der ausgeführt werden muss, einschließlich der EXIT-Bedingung.
  • Der Ausführungsteil kann eine beliebige Ausführungsanweisung enthalten.

Hinweis: Eine einfache Schleifenanweisung ohne EXIT-Schlüsselwort ist eine Endlosschleife, die niemals stoppt.

Beispiel 1: In diesem Beispiel werden wir Zahlen von 1 bis 5 mit einer einfachen Schleifenanweisung ausgeben. Dazu führen wir Folgendes auswing Code.

Grundlegende Schleifenanweisung

DECLARE 
a NUMBER:=1; 
BEGIN
dbms_output.put_line('Program started.');
LOOP
dbms_output.put_line(a);
a:=a+1;
EXIT WHEN a>5;
END LOOP;
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 „1“.
  • Codezeile 4: Ausdruck der Aussage „Programm gestartet“.
  • Codezeile 5: Das Schlüsselwort „LOOP“ markiert den Anfang der Schleife.
  • Codezeile 6: Gibt den Wert von 'a' aus.
  • Codezeile 7: Erhöht den Wert von „a“ um +1.
  • Codezeile 8: Überprüft, ob der Wert von 'a' größer als 5 ist.
  • Codezeile 9: Das Schlüsselwort „END LOOP“ markiert das Ende des Ausführungsblocks.
  • Der Code von Zeile 6 bis Zeile 8 wird so lange ausgeführt, bis „a“ den Wert 6 erreicht, da die Bedingung TRUE zurückgibt und die Steuerung die Schleife verlässt.
  • Codezeile 10: Ausdrucken der Aussage „Programm abgeschlossen“

Beschriftung von Schleifen

In PL/SQL können die Schleifen beschriftet werden. Die Bezeichnung sollte zwischen „<<“ und „>>“ stehen. Die Beschriftung von Schleifen, insbesondere in verschachtelten Schleifencodes, sorgt für eine bessere Lesbarkeit. Die Bezeichnung kann im EXIT-Befehl angegeben werden, um diese bestimmte Schleife zu verlassen. Mit label kann die Steuerung so eingestellt werden, dass sie die äußere Schleife der verschachtelten Schleifen direkt an einer beliebigen Stelle innerhalb der Schleifen verlässt, indem der Exit-Befehl gefolgt von der Bezeichnung der äußeren Schleife gegeben wird.

Beschriftung von Schleifen

<<OUTER_LOOP>>
LOOP 
	<execution_block_starts>
	.
	<<INNER_LOOP>>
	LOOP --inner
		<execution_part>
	END LOOP;
	.
	<executi_block_ends>
END LOOP;

Syntaxerklärung:

  • In der obigen Syntax enthält die Out-Schleife eine weitere Schleife.
  • Das '< >' und '< >' sind die Bezeichnungen dieser Schleifen.

Beispiel 1: In diesem Beispiel drucken wir mit der Basic-Schleifenanweisung eine Zahl beginnend bei 1 aus. Jede Zahl wird so oft gedruckt, wie ihr Wert entspricht. Die Obergrenze der Reihe wird im Programmdeklarationsteil festgelegt. Lassen Sie uns erfahren, wie wir das Label-Konzept dazu nutzen können. Dazu führen wir Folgendes auswing Code

Beschriftung von SchleifenBeschriftung von Schleifen

DECLARE
a NUMBER:=0;
b NUMBER;
upper-limit NUMBER :=4;
BEGIN
dbms_output.put_line(‘Program started.' ); 
«outerloop»‭	‬
LOOP 
a:=a+1;
b:=l;
«inner loop»
LOOP
EXIT outer_loop WHEN a > upper_limit;
dbms_output.put_line(a);
b:=b+l;
EXIT inner_loop WHEN b>a;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

Code-Erklärung:

  • Codezeile 2-3: Deklarieren der Variablen „a“ und „b“ als Datentyp „NUMBER“.
  • Codezeile 4: Deklaration der Variablen „upper_limit“ als Datentyp „NUMBER“ mit dem Wert „4“
  • Codezeile 6: Ausdruck der Aussage „Programm gestartet“.
  • Codezeile 7: Die äußere Schleife wurde als „outer_loop“ bezeichnet.
  • Codezeile 9: Der Wert von „a“ wird um 1 erhöht.
  • Codezeile 11: Die innere Schleife wurde als „inner_loop“ bezeichnet.
  • Codezeile 13: EXIT-Bedingung, die prüft, ob der Wert „a“ höher als der Wert „upper_limit“ ist. Wenn nicht, geht es weiter, andernfalls verlässt es die äußere Schleife direkt.
  • Codezeile 14: Drucken des Werts von 'b'.
  • Codezeile 15: Erhöht den Wert von 'b' um +1.
  • Codezeile 16: EXIT-Bedingung, die prüft, ob der Wert von „b“ größer als „a“ ist. Wenn ja, wird die Steuerung aus der inneren Schleife verlassen.
  • Codezeile 14: Ausdrucken der Aussage „Programm abgeschlossen“

Zusammenfassung

Loop Grundlegende Schleife
Abbruchkriterium Beenden, wenn im Ausführungsteil auf das Schlüsselwort „EXIT“ gestoßen wird
Anwendungsbereich Gut zu verwenden, wenn der Ausstieg nicht auf einer bestimmten Bedingung basiert.