Einführung in Cursors in PL / SQL

PL / SQL ist eine der am häufigsten verwendeten Programmiersprachen für die Datenbankprogrammierung. Einige wichtige Konzepte von PL / SQL müssen von einem PL / SQL-Programmierer klar gelernt und verstanden werden, damit sie ordnungsgemäß verwendet werden können. Der Cursor ist einer von ihnen. Im PL / SQL-Programm müssen am Ende SQL-Anweisungen ausgeführt werden. Der Cursor ist wie ein Zeiger, mit dem auf den Kontextbereich verwiesen wird, der von Oracle zur Ausführung der SQL-Anweisung erstellt wurde. Ein Cursor enthält alle Zeilen, die nach der Verarbeitung von SQL-Anweisungen zurückgegeben wurden. Die Menge der Zeile, die von Cursor gehalten wird, wird als aktive Menge bezeichnet. Der Cursor kann auch benannt werden, um ihn von einem Programmierer im Programm weiter zu verwenden. In diesem Thema lernen wir Cursors in PL / SQL kennen.

Arten von Cursorn

Es gibt zwei Arten von Cursorn, die in der PL / SQL-Programmierung verwendet werden:

1. Implizite Cursor

Wie der Name schon sagt, sind implizite Cursor diejenigen Cursor, die von Oracle automatisch erstellt werden, wenn DML-Anweisungen wie INSERT, DELETE, UPDATE ausgeführt werden. Wenn der Programmierer keinen Cursor erstellt, erstellt Oracle diesen selbst, um die von den DML-Anweisungen betroffenen Zeilen aufzunehmen. Diese Cursor können vom Programmierer nicht benannt werden und können daher nicht an einer anderen Stelle im Code referenziert und verwendet werden. Oracle stellt jedoch einige Attribute zur Verfügung, mit denen einige Operationen ausgeführt werden können

% FOUND, % NOTFOUND, % ROWCOUNT, % ISOPEN.

S.No.AttributBeschreibung
1.% GEFUNDENGibt True zurück, wenn DML-Anweisungen wie INSERT,

DELETE, UPDATE wirken sich auf eine oder mehrere Zeilen aus, oder die SELECT-Anweisung gibt eine oder mehrere Zeilen zurück. Andernfalls wird False zurückgegeben

2.%NICHT GEFUNDENEs ist das Gegenteil des% FOUND-Attributs. Es gibt True zurück, wenn keine der Zeilen von der DML-Anweisung betroffen ist, oder SELECT-Anweisung gibt keine Ergebnisse zurück. Andernfalls wird False zurückgegeben.
3.%IST OFFENBei impliziten Cursorn wird immer False zurückgegeben, da Oracle den Cursor unmittelbar nach der Ausführung von SQL-Anweisungen schließt.
4.%REIHENANZAHLEs gibt die Zeilenzahl zurück. Dh die Anzahl der Zeilen, die von der genannten DML betroffen sind
Anweisungen des Programmierers im PL / SQL-Code wie INSERT, DELETE und UPDATE oder die Anzahl der Zeilen, die von der SELECT INTO-Anweisung zurückgegeben werden.
Beispiel

Szenario: Aktualisieren der Noten aller Schüler in einer Tabelle 'Schüler' in englischer Sprache mit der Spalte 'Betreff' um 10.

DECLARE
affected_rows number(4);
BEGIN
UPDATE students SET marks = marks+10 where subject = 'English';
IF​ sql%NOTFOUND THEN dbms_output.put_line ('No records of English subject are updated');
ELSIF sql%FOUND THEN​ affected rows: = affected rows%rowcount
dbms_output.put_line('Congrats ..Records Updated' || affected_rows);
END IF;
END;
/

2. Explizite Cursor

Explizite Cursor sind diejenigen Cursor, die von Programmierern definiert werden, um mehr Kontrolle über den Kontextbereich zu haben (in dem die Ergebnisse von SQL-Abfragen gespeichert werden). Diese Cursor müssen zuerst im Deklarationsblock des PL / SQL-Programms definiert werden. Es wird für die SQL-Anweisungen erstellt, die nach ihrer Verarbeitung mehr als eine Zeile zurückgeben. Für die Verwendung eines expliziten Cursors muss ein bestimmtes Verfahren befolgt werden. Die Schritte zur Verwendung des expliziten Cursors sind nachfolgend aufgeführt:

1. Deklarieren Sie den Cursor: Er wird verwendet, um dem Kontextbereich / Cursor zusammen mit der auszuführenden select-Anweisung einen Namen zu geben.

Syntax

CURSOR cursor_name IS SELECT statement;

2. Öffnen Sie den Cursor: Öffnen Sie einen Cursor, ordnen Sie ihm den Speicher zu und stellen Sie ihn zur Verfügung, um die von der SQL-Anweisung zurückgegebenen Datensätze abzurufen.

Syntax

OPEN cursor_name;

3. Holen Sie den Cursor: Dabei wird jeweils auf eine Zeile zugegriffen. Die SELECT-Anweisung wird ausgeführt und die abgerufenen Zeilen werden im Kontextbereich gespeichert. Es ruft die Datensätze ab und ordnet sie einer definierten Variablen zu.

Syntax

FETCH cursor_name INTO variable;

4. Cursor schließen: In diesem Schritt wird der oben geöffnete Cursor geschlossen, um die Speicherzuordnung aufzuheben, sobald alle gespeicherten Zeilen erfolgreich abgerufen wurden.

Syntax

CLOSE cursor_name;

Beispiel

Szenario: Rufen Sie den Namen, die Adresse und den Gesamtprozentsatz der Schüler in einer Tabelle ab

"Student" mit Spalten "Name", "Adresse" und "Prozentsatz"

DECLARE
stud_name student.name%type; stud_address student.address%type;
stud_percentage student.percentage%type;
CURSOR stud IS SELECT name, address, percentage FROM student; BEGIN
Open stud;
LOOP
FETCH stud into stud_name, stud_address, stud_percentage;
EXIT when stud%NOTFOUND;
dbms_ouput.put_line(stud_name || ' ' || stud_address || ' ' || stud_percentage);
END LOOP;
CLOSE stud;
END
/

Cursoraktionen

Im Gegensatz zu SQL, das für alle Zeilen einer Ergebnismenge gleichzeitig ausgeführt wird, wird der Cursor hauptsächlich in den Szenarien verwendet, in denen der Programmierer die Daten einer Zeile gleichzeitig verarbeiten und abrufen möchte.

Nachfolgend sind einige der Cursoraktionen aufgeführt:

  1. Cursor deklarieren: Es ist wichtig, einen Cursor zu deklarieren, bevor Sie ihn verwenden. Ein Cursor wird deklariert, indem die zu verarbeitende SQL-Anweisung definiert wird.
  2. Einen Cursor öffnen: Nach der Deklaration wird ein Cursor geöffnet und durch die Datenrückgabe durch die Verarbeitung der SQL-Anweisung aufgefüllt.
  3. Abrufen eines Cursors: Nachdem der Cursor geöffnet wurde, müssen die Ausgabezeilen einzeln abgerufen werden, um bei Bedarf Änderungen vorzunehmen.
  4. Cursor schließen: Nach all den Datenmanipulationen. Ein erstellter Cursor muss geschlossen werden
  5. Freigeben: Dieser Schritt umfasst das Löschen des Cursors und gibt alle darin enthaltenen Ressourcen frei.

Bedeutung des Cursors in PL / SQL

In jeder Programmiersprache ist es eine wichtige Aufgabe, auf den Speicherort zu verweisen und entsprechende Aktionen auszuführen. In PL / SQL wird dies von Cursors ausgeführt. Cursor spielen eine entscheidende Rolle bei der Ausführung der verschiedenen Aufgaben, indem sie dem Speicherbereich (Kontextbereich), in dem die Ergebnisse von SQL-Abfragen gespeichert werden, einen Namen geben. Wir können nacheinander auf die Datensätze zugreifen und bei Bedarf Änderungen daran vornehmen oder sie auf der Konsole entsprechend anzeigen. Explizite Cursor sind effizienter, bieten eine bessere Programmsteuerung und sind weniger anfällig für Datenfehler, sodass sie für die PL / SQL-Programmierung sehr nützlich sind als implizite.

Fazit

Die Datenbankprogrammierung ist heutzutage sehr beliebt und PL / SQL ist eine der Sprachen, die sehr gut darin verwendet werden sollten. Cursor geben dem Programmierer mehr Kontrolle über den Zugriff auf die abgerufenen Daten. Damit ein Programmierer mit PL / SQL arbeiten kann, ist es wichtig, die Verwendung und Bedeutung von Cursor zu kennen, um effektiv arbeiten zu können.

Empfohlene Artikel

Dies ist eine Anleitung zu Cursorn in PL / SQL. Hier diskutieren wir die Cursortypen, die in der PL / SQL-Programmierung mit Cursoraktionen verwendet werden, und die Bedeutung des Cursors. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Arten von Joins in SQL
  2. SQL-Einfügeabfrage
  3. Tabelle in SQL
  4. Platzhalter in SQL
  5. Top 6 Arten von Joins in MySQL mit Beispielen