Oracle PL / SQL LOOP mit Beispiel

Inhaltsverzeichnis:

Anonim

Was sind Schleifen?

Mit Schleifen kann ein bestimmter Teil des Codes in einem Programm für die gewünschte Anzahl von Malen ausgeführt werden.

In diesem Tutorial werden wir das Schleifenkonzept in PL / SQL und den Steuerungsfluss in Schleifen sehen. Du wirst es lernen-

  • Einführung in das Loops-Konzept
  • Schleifensteuerungsanweisungen
  • Arten von Schleifen in PL / SQL
  • Grundlegende Schleifenanweisung
  • Beschriftung von Schleifen

Einführung in das Loops-Konzept

Das Schleifenkonzept bietet den folgenden Vorteil bei der Codierung.

  • Wiederverwendbarkeit von Code
  • Reduzierte Codegröße
  • Einfacher Kontrollfluss
  • Reduzierte Komplexität

Das folgende Diagramm zeigt das Schleifenkonzept bildlich

In dem obigen Diagramm wird die Schleifenbedingung überprüft, und solange die Schleifenbedingung erfüllt ist, wird der Ausführungsblock ausgeführt.

In jeder Iteration sollte die Schleifenzählervariable, die tatsächlich über die Schleifenbedingung entscheidet, geändert werden, damit die Steuerung die Schleife verlässt. In einigen Fällen ist diese Schleifenzählervariable ein Inkrementierungs- / Dekrementierungsoperator für eine vordefinierte Anzahl, und in einigen Fällen ist es eine Suchbedingung, die den Block so lange ausführt, bis er ihn erfüllt.

Schleifensteuerungsanweisungen

Vor dem Erlernen des Schleifenkonzepts müssen die Schleifensteuerungsanweisungen erlernt werden. Schleifensteuerungsanweisungen sind solche, die den Ausführungsfluss innerhalb der Schleife tatsächlich steuern. Unten finden Sie eine detaillierte Beschreibung der Schleifensteuerungsanweisungen.

FORTSETZEN

Dieses Schlüsselwort sendet eine Anweisung an die PL / SQL-Engine, dass jedes Mal, wenn die PL / SQL-Engine auf dieses Schlüsselwort in der Schleife stößt, der verbleibende Code im Ausführungsblock des Codes übersprungen wird und die nächste Iteration sofort beginnt. Dies wird hauptsächlich verwendet, wenn der Code in der Schleife für bestimmte Iterationswerte übersprungen werden soll.

EXIT / EXIT WANN

Dieses Schlüsselwort sendet eine Anweisung an die PL / SQL-Engine, dass jedes Mal, wenn die PL / SQL-Engine auf dieses Schlüsselwort stößt, die aktuelle Schleife sofort verlassen wird. Wenn die PL / SQL-Engine in einer verschachtelten Schleife auf EXIT stößt, verlässt sie die Schleife, in der sie definiert wurde, dh in verschachtelten Schleifen. Wenn EXIT in der inneren Schleife angegeben wird, wird die Steuerung jedoch nur aus der inneren Schleife entfernt nicht von der äußeren Schleife. Auf 'EXIT WHEN' folgt ein Ausdruck, der ein boolesches Ergebnis liefert. Wenn das Ergebnis TRUE ist, wird das Steuerelement beendet.

GEHE ZU

Diese Anweisung überträgt das Steuerelement auf die beschriftete Anweisung ("GOTO

  • Die Übertragung der Steuerung kann nur innerhalb der Unterprogramme erfolgen.
  • Die Übertragung der Kontrolle kann nicht vom Ausnahmebehandlungsteil zum Ausführungsteil erfolgen

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 Steuerung von einem Teil auf einen anderen Teil sehr schwierig ist.

Arten von Schleifen in PL / SQL

PL / SQL bietet die folgenden drei Arten von Schleifen

  • Grundlegende Schleifenanweisung
  • Für 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 die Steuerung die Schleife verlässt.

Das Schlüsselwort EXIT muss explizit im Ausführungsteil angegeben werden, um die Schleife zu verlassen.

LOOPEND LOOP;
Syntax Erläuterung:
  • In der obigen Syntax markiert das Schlüsselwort 'LOOP' den Beginn 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 grundlegende Schleifenanweisung ohne EXIT-Schlüsselwort ist eine INFINITE-LOOP, die niemals aufhört.

Beispiel 1 : In diesem Beispiel drucken wir eine Zahl von 1 bis 5 mit der einfachen Schleifenanweisung. Dazu führen wir den folgenden Code aus.

DECLAREa NUMBER:=1;BEGINdbms_output.put_line('Program started.');LOOPdbms_output.put_line(a);a:=a+1;EXIT WHEN a>5;END LOOP;dbms_output.put_line('Program completed');END:/

Code Erläuterung:

  • Codezeile 2 : Deklarieren der Variablen 'a' als Datentyp 'NUMBER' und Initialisieren mit dem Wert '1'.
  • Codezeile 4 : Drucken der Anweisung "Programm gestartet".
  • Codezeile 5: Das Schlüsselwort 'LOOP' markiert den Beginn 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: Drucken der Anweisung "Programm abgeschlossen"

Beschriftung von Schleifen

In PL / SQL können die Schleifen beschriftet werden. Das Etikett sollte zwischen "<<" und ">>" stehen. Die Kennzeichnung von Schleifen, insbesondere in verschachtelten Schleifencodes, bietet eine bessere Lesbarkeit. Die Bezeichnung kann im Befehl EXIT angegeben werden, um diese bestimmte Schleife zu verlassen. Mit label kann das Steuerelement so eingestellt werden, dass die äußere Schleife der verschachtelten Schleifen von jedem Ort innerhalb der Schleifen direkt verlassen wird, indem der Befehl exit gefolgt von der Beschriftung der äußeren Schleife eingegeben wird.

<>LOOP  . <> LOOP --inner  END LOOP; . END LOOP;
Syntax Erläuterung:
  • In der obigen Syntax enthält die out-Schleife eine weitere Schleife.
  • Die Bezeichnungen '<< OUTER_LOOP >>' und '<< INNER_LOOP >>' sind die Bezeichnungen dieser Schleifen.

Beispiel 1 : In diesem Beispiel wird die Nummer ab 1 mit der Basic-Schleifenanweisung gedruckt. Jede Zahl wird so oft gedruckt wie ihr Wert. Die Obergrenze der Reihe ist im Programmdeklarationsteil festgelegt. Lassen Sie uns lernen, wie wir das Etikettenkonzept verwenden können, um dies zu erreichen. Dazu führen wir den folgenden Code aus

DECLAREa NUMBER:=0;b NUMBER;upper-limit NUMBER :=4;BEGINdbms_output.put_line(‘Program started.' );«outerloop»‭ ‬LOOPa:=a+1;b:=l;«inner loop»LOOPEXIT 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 Erläuterung:

  • Codezeile 2-3 : Deklarieren der Variablen 'a' und 'b' als Datentyp 'NUMBER'.
  • Codezeile 4 : Deklarieren der Variablen 'Upper_limit' als Datentyp 'NUMBER' mit dem Wert '4'
  • Codezeile 6 : Drucken der Anweisung "Programm gestartet".
  • Codezeile 7: Die äußere Schleife wurde als "äußere_Schleife" gekennzeichnet.
  • Codezeile 9: Der Wert von 'a' wird um 1 erhöht.
  • Codezeile 11: Die innere Schleife wurde als "inner_loop" gekennzeichnet.
  • Codezeile 13: EXIT-Bedingung, die prüft, ob der Wert 'a' höher als der Wert 'Upper_limit' ist. Wenn nicht, geht es weiter, sonst 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' höher als 'a' ist. Wenn ja, verlässt es die Steuerung aus der inneren Schleife.
  • Codezeile 14: Drucken der Anweisung "Programm abgeschlossen"

Zusammenfassung

Schleife Grundschleife
Abbruchkriterium Beenden, wenn das Schlüsselwort 'EXIT' im Ausführungsteil gefunden wird
Verwendung Gut zu verwenden, wenn der Ausgang nicht auf einer bestimmten Bedingung basiert.