Ein Cursor für die Schleife ist eine Erweiterung der für die Loop in PL/SQL und ermöglicht es Ihnen, einen Codeblock für jede Zeile in einem resultierenden Satz auszuführen. Dies ist sehr nützlich, da Sie in einer einzigen Berechnung schnell und effizient umfangreiche Berechnungen durchführen können, ohne die Daten in den Speicher zu laden.
Oracle Cursor für Schleife
Die für die Schleife holt eine Zeile aus dem resultierenden in den Loop -Index für jede Iteration ein. Wenn es keine Reihe gibt, schließt die für Schleife den Cursor.
Das Folgende zeigt die grundlegende Syntax des Cursors für die Schleife in Oracle:
Für den Aufzeichnung in Cursor_Name
SCHLEIFE
-- Wenden Sie diesen Block auf jede Zeile an
Endschleife;
In der bereitgestellten Syntax repräsentiert der Datensatz den variablen Namen, der jede Zeile im Cursor vorverträgt.
Der Cursor_Name in der Schleife gibt einen expliziten Cursor an, den Sie durchlaufen möchten. Beachten Sie, dass ein Cursor geöffnet und in den Datensatz eingereicht werden muss, bevor Sie ihn in einem Cursor für die Schleife verwenden.
Wenn Sie keinen expliziten Cursor erstellen möchten, erstellt der For -Loop implizit einen Schleifenindex als Datensatzvariable von %rowType, wenn Sie den Cursor_Name überspringen.
Oracle Cursor für Schleifenbeispiel
Schauen wir uns einige grundlegende Beispiele des Cursors für Schleife in Oracle -Datenbanken an.
erklären
Cursor EMP_Cursor ist
Wählen Sie First_Name, last_name aus
von Mitarbeitern;
Start
Für Mitarbeiter in EMP_CURSOR
Schleife
Dbms_output.Put_line (Mitarbeiter.First_Name || "|| Mitarbeiter.Familienname, Nachname);
Endschleife;
Ende;
Im vorgesehenen Code deklarieren wir einen Cursor namens EMP_CURSOR. Anschließend bevölkern wir diesen Cursor mit den Daten aus der Tabelle der Mitarbeiter mit den Spalten First_Name und Last_Name.
Als Nächst. Beachten Sie, dass die Variable der Mitarbeiter jede Zeile im emp_cursor speichert.
Die Schleife verkettet die Spalten First_Name und Last_Name und druckt das Ergebnis mit dem dbms_output aus.Put_line -Funktion.
Die Datenbankmotor schließt den Cursor automatisch, sobald der Schleifen endet.
Dies sollte die folgenden Ergebnisse zurückgeben und zeigen, wie wir eine explizite Cursordefinition verwenden können, um Daten aus einer Tabelle zu verarbeiten:
Oracle implizite Cursor
Wenn Sie keinen expliziten Cursor erstellen möchten, können Sie der Datenbank -Engine erstellen und für Sie verwalten, indem Sie den Cursornamen wie im Folgenden gezeigt auslassen:
START
Für Mitarbeiter in (SELECT FIRST_NAME, last_name
Aus Mitarbeitern) Schleife
Dbms_output.Put_line (Mitarbeiter.First_Name || "|| Mitarbeiter.Familienname, Nachname);
Endschleife;
ENDE;
Dies sollte ein ähnliches Ergebnis als explizites Cursor zurückgeben.
Abschluss
In diesem Beitrag sind Sie auf den Cursor für Schleifen in Oracle -Datenbanken gestoßen, um jede Zeile aus einem Ergebnissatz abzurufen und zu verarbeiten.