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 Loop-Konzept bietet beim Codieren den folgenden Vorteil.
- Wiederverwendbarkeit von Code
- Reduzierte Codegrรถรe
- Einfacher Kontrollfluss
- Reduzierte Komplexitรคt
Das folgende Diagramm zeigt das Looping-Konzept bildlich
Im obigen Diagramm wird die Schleifenbedingung รผberprรผft und solange die Schleifenbedingung erfรผllt ist, wird der Ausfรผhrungsblock ausgefรผhrt.
Bei jeder Iteration muss die Schleifenzรคhlervariable, die tatsรคchlich die Schleifenbedingung bestimmt, geรคndert werden, damit die Steuerung die Schleife verlรคsst. In einigen Fรคllen ist diese Schleifenzรคhlervariable ein Inkrement-/Dekrementoperator fรผr eine vordefinierte Anzahl und in einigen Fรคllen eine Suchbedingung, die den Block so lange ausfรผhrt, bis sie erfรผllt ist.
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 Steuerung an die markierte Anweisung (โGOTO ;โ). Dies hat die folgenden 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 folgende drei Arten von Schleifen
- Grundlegende Schleifenanweisung
- For-Schleifenanweisung
- While-Schleifenanweisung
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.
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 drucken wir Zahlen von 1 bis 5 mithilfe einer einfachen Schleifenanweisung. Dazu fรผhren wir den folgenden Code aus.
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.
<<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 Zahlen beginnend bei 1 mithilfe der Basic-Schleifenanweisung. Jede Zahl wird so oft gedruckt, wie ihr Wert ist. Die Obergrenze der Reihe wird im Programmdeklarationsteil festgelegt. Lassen Sie uns lernen, wie wir das Label-Konzept nutzen kรถnnen, um dies zu erreichen. Dazu fรผhren wir den folgenden Code aus
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. |






