Oracle PL/SQL FOR LOOP mit Beispiel
⚡ Intelligente Zusammenfassung
Oracle Die PL/SQL-FOR-Schleife führt einen Codeblock eine bekannte Anzahl von Malen zwischen einer unteren und einer oberen Grenze aus. Die Schleifenvariable wird implizit deklariert und inkrementiert sich selbst, sodass kein manueller Zähler benötigt wird. Das Schlüsselwort REVERSE bewirkt, dass die Schleife rückwärts zählt.
Was ist eine FOR-Schleife?
Die „FOR LOOP“-Anweisung eignet sich am besten, wenn Sie Code eine bekannte Anzahl von Malen ausführen möchten, anstatt basierend auf einer anderen Bedingung.
In dieser Schleife werden eine untere und eine obere Grenze festgelegt, und solange sich die Schleifenvariable innerhalb dieses Bereichs befindet, wird die Schleife ausgeführt.
Die Schleifenvariable ist selbstinkrementell, daher ist keine explizite Inkrementierungsoperation erforderlich. Die Schleifenvariable muss nicht deklariert werden, da sie implizit deklariert wird.
FOR <loop_variable> in <lower_limit> .. <higher_limit> LOOP <execution block starts> . . . <execution_block_ends> END LOOP;
Syntaxerklärung:
- Das Schlüsselwort 'FOR' kennzeichnet den Beginn der Schleife und 'END LOOP' das Ende.
- Die Schleifenvariable wird jedes Mal vor der Ausführung des jeweiligen Schleifenteils ausgewertet.
- Der Ausführungsblock enthält den gesamten auszuführenden Code und kann beliebige ausführbare Anweisungen enthalten.
- Die Schleifenvariable wird implizit während der Ausführung der Schleife deklariert und hat nur innerhalb der Schleife Gültigkeit.
- Wenn die Schleifenvariable den gültigen Bereich verlässt, wird die Schleife beendet.
- Die Schleife kann in umgekehrter Reihenfolge ausgeführt werden, indem das Schlüsselwort 'REVERSE' vor lower_limit hinzugefügt wird.
Beispiel 1: In diesem Beispiel geben wir die Zahlen von 1 bis 5 mithilfe einer FOR-Schleife aus.
BEGIN dbms_output.put_line('Program started.'); FOR a IN 1 .. 5 LOOP dbms_output.put_line(a); END LOOP; dbms_output.put_line('Program completed.'); END; /
Code Erläuterung:
- Code Zeile 2: Die Meldung „Programm gestartet“ wird ausgegeben.
- Code Zeile 3: Das Schlüsselwort 'FOR' markiert den Beginn der Schleife und die Schleifenvariable 'a' wird deklariert. Sie nimmt nun Werte von 1 bis 5 an.
- Code Zeile 5: Gibt den Wert von 'a' aus.
- Code Zeile 6: Das Schlüsselwort 'END LOOP' markiert das Ende des Ausführungsblocks.
- Zeile 5 wird so lange ausgeführt, bis 'a' den Wert 6 erreicht. Dann ist die Bedingung nicht mehr erfüllt und die Schleife wird verlassen.
- Code Zeile 7: Drucken der Meldung „Programm abgeschlossen“.
Verschachtelte Schleifen
Schleifenanweisungen können auch verschachtelt werden. Die äußere und die innere Schleife können unterschiedliche Typen haben. In einer verschachtelten Schleife wird bei jeder Iteration der äußeren Schleife die innere Schleife vollständig ausgeführt.
LOOP --outer <execution block starts> LOOP --inner <execution_part> END LOOP; <execution_block_ends> END LOOP;
Syntaxerklärung:
- Die äußere Schleife enthält eine weitere Schleife im Inneren.
- Die Schleifen können von beliebigem Typ sein, die Ausführungsfunktionalität ist jedoch immer dieselbe.
Beispiel 1: In diesem Beispiel geben wir die Zahlen von 1 bis 3 mithilfe einer FOR-Schleife aus. Jede Zahl wird so oft ausgegeben, wie ihr Wert angibt.
DECLARE b NUMBER; BEGIN dbms_output.put_line('Program started'); FOR a IN 1..3 LOOP b:= 1; WHILE (a>=b) LOOP dbms_output.put_line(a); b:= b+1; END LOOP; END LOOP; dbms_output.put_line('Program completed'); END; /
Code Erläuterung:
- Code Zeile 2: Die Variable 'b' wird als Datentyp 'NUMBER' deklariert.
- Code Zeile 4: Die Meldung „Programm gestartet“ wird ausgegeben.
- Code Zeile 5: Das Schlüsselwort 'FOR' markiert den Beginn der Schleife und die Schleifenvariable 'a' wird deklariert. Sie nimmt nun Werte von 1 bis 3 an.
- Code Zeile 7: Der Wert von „b“ wird jedes Mal auf „1“ zurückgesetzt.
- Code Zeile 8: Das Innere while-Schleife prüft auf die Bedingung a>=b.
- Code Zeile 10: Gibt den Wert von „a“ aus, solange die obige Bedingung erfüllt ist.
- Code Zeile 14: Drucken der Meldung „Programm abgeschlossen“.
FOR-Schleife und REVERSE FOR-Schleife
Standardmäßig zählt eine FOR-Schleife von der unteren zur oberen Grenze aufwärts. Das Schlüsselwort REVERSE bewirkt, dass sie abwärts zählt, während die untere Grenze beibehalten wird.ping Die Grenzwerte in der gleichen Reihenfolge. Beide Formen sind unten zusammen dargestellt, damit der Unterschied deutlich wird.
| Form | Kopfzeile | Wertreihenfolge |
|---|---|---|
| Aufsteigend | FÜR ein IN 1 .. 5 | 1, 2, 3, 4, 5 |
| Absteigend | FÜR ein RÜCKWÄRTS 1 .. 5 | 5, 4, 3, 2, 1 |
Beachten Sie, dass selbst bei REVERSE die untere Grenze weiterhin vor der oberen Grenze geschrieben wird; nur die Iterationsrichtung ändert sich. Bei Schleifen, deren Anzahl nicht im Voraus bekannt ist, Grundschleife ist die bessere Wahl.





