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.

  • ๐Ÿ”ข am besten geeignet fรผr: Eine FOR-Schleife eignet sich besser fรผr eine bekannte Anzahl von Iterationen als fรผr eine offene Bedingung.
  • ๐Ÿ“ Reichweite: Eine untere und eine obere Grenze definieren, wie oft die Schleife durchlaufen wird.
  • โš™๏ธ Impliziter Zรคhler: Die Schleifenvariable wird automatisch deklariert und inkrementiert sich selbststรคndig.
  • ๐ŸŽฏ Umfang: Die Schleifenvariable existiert nur innerhalb der Schleife.
  • ๐Ÿ”„ UMKEHREN: Durch Hinzufรผgen von REVERSE vor der unteren Grenze wird die Schleife heruntergezรคhlt.
  • ๐Ÿชœ Verschachtelt: Schleifen kรถnnen verschachtelt werden, und die innere Schleife wird bei jeder Iteration der รคuรŸeren Schleife vollstรคndig durchlaufen.
  • ๐Ÿšช Automatischer Ausstieg: Die Schleife endet automatisch, wenn die Variable den Bereich verlรคsst.

Oracle PL/SQL-For-Schleife

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.

FOR-Schleife gibt die Zahlen 1 bis 5 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.

Verschachtelte Schleifenstruktur

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.

Beispiel einer verschachtelten FOR-Schleife, Teil 1

Beispiel einer verschachtelten FOR-Schleife, Teil 2

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.

Hรคufig gestellte Fragen

Nein. Die FOR-Schleife deklariert ihre Variable implizit, und sie existiert nur innerhalb der Schleife. Die Deklaration einer Variable mit demselben Namen auรŸerhalb der Schleife hat keinen Einfluss auf die von der Schleife verwendete Variable.

REVERSE bewirkt, dass die Schleife von der oberen zur unteren Grenze iteriert. Die Grenzen werden weiterhin von niedrig nach hoch geschrieben; nur die Reihenfolge, in der die Werte durchlaufen werden, wird umgekehrt.

Verwenden Sie eine FOR-Schleife, wenn die Anzahl der Iterationen im Voraus bekannt ist, beispielsweise bei einem festen Bereich. Verwenden Sie eine WHILE-Schleife, wenn die Schleife so lange fortgesetzt werden soll, wie eine Bedingung erfรผllt ist und die Anzahl der Iterationen nicht festgelegt ist.

Ja, wenn die einfache Schleife lediglich zwischen zwei festen Werten zรคhlt. KI kann den manuellen Zรคhler und EXIT durch eine FOR-Schleife ersetzen, wodurch der Code kรผrzer wird. Stellen Sie sicher, dass die Grenzen mit dem Original รผbereinstimmen.

Nein. Die Schleifenvariable ist innerhalb der Schleife schreibgeschรผtzt, daher fรผhrt eine Zuweisung zu einem Kompilierfehler. Um den Ablauf zu รคndern, verwenden Sie eine separate Variable oder beenden Sie die Schleife mit EXIT.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: