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: