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.




