Expliziter Cursor vs. impliziter Cursor
Bei Datenbanken handelt es sich bei einem Cursor um eine Kontrollstruktur, mit der die Datensätze einer Datenbank durchsucht werden können. Ein Cursor bietet einen Mechanismus, um einer SQL-Select-Anweisung einen Namen zuzuweisen. Anschließend kann er verwendet werden, um die Informationen in dieser SQL-Anweisung zu bearbeiten. Implizite Cursor werden automatisch erstellt und verwendet, wenn eine Select-Anweisung in PL / SQL ausgegeben wird, wenn kein explizit definierter Cursor vorhanden ist. Explizite Cursor werden, wie der Name schon sagt, vom Entwickler explizit definiert. In PL / SQL ist ein expliziter Cursor eine benannte Abfrage, die mit dem Schlüsselwort-Cursor definiert wird.
Was ist der implizite Cursor??
Implizite Cursor werden von Oracle bei jeder Ausgabe einer select-Anweisung automatisch erstellt und verwendet. Wenn ein impliziter Cursor verwendet wird, führt das Database Management System (DBMS) die Operationen Öffnen, Abrufen und Schließen automatisch aus. Implizite Cursor sollten nur mit SQL-Anweisungen verwendet werden, die eine einzelne Zeile zurückgeben. Wenn die SQL-Anweisung mehr als eine Zeile zurückgibt, führt die Verwendung eines impliziten Cursors zu einem Fehler. Jedem DML-Statement (Data Manipulation Language), nämlich den Anweisungen INSERT, UPDATE und DELETE, wird automatisch ein impliziter Cursor zugeordnet. Ein impliziter Cursor wird auch zur Verarbeitung von SELECT INTO-Anweisungen verwendet. Beim Abrufen von Daten unter Verwendung impliziter Cursor kann die Ausnahme NO_DATA_FOUND ausgelöst werden, wenn die SQL-Anweisung keine Daten zurückgibt. Außerdem können implizite Cursor TOO_MANY_ROWS-Ausnahmen auslösen, wenn die SQL-Anweisung mehr als eine Zeile zurückgibt.
Was ist der explizite Cursor??
Wie bereits erwähnt, sind explizite Cursor Abfragen, die mit einem Namen definiert werden. Ein expliziter Cursor kann als Zeiger auf einen Satz von Datensätzen betrachtet werden, und der Zeiger kann innerhalb des Datensatzes nach vorne verschoben werden. Explizite Cursor bieten dem Benutzer die vollständige Kontrolle über das Öffnen, Schließen und Abrufen von Daten. Es können auch mehrere Zeilen mit einem expliziten Cursor abgerufen werden. Explizite Cursor können ebenso wie jede Funktion oder Prozedur Parameter übernehmen, sodass die Variablen im Cursor bei jeder Ausführung geändert werden können. Außerdem können Sie mit expliziten Cursorn eine ganze Zeile in eine PL / SQL-Datensatzvariable holen. Bei Verwendung eines expliziten Cursors muss dieser zunächst mit einem Namen deklariert werden. Auf die Cursorattribute kann mit dem Namen des Cursors zugegriffen werden. Nach der Deklaration muss der Cursor zuerst geöffnet werden. Dann kann der Abruf gestartet werden. Wenn mehrere Zeilen abgerufen werden müssen, muss der Abrufvorgang innerhalb einer Schleife ausgeführt werden. Schließlich muss der Cursor geschlossen werden.
Unterschied zwischen explizitem Cursor und implizitem Cursor
Der Hauptunterschied zwischen dem impliziten Cursor und dem expliziten Cursor besteht darin, dass ein expliziter Cursor explizit durch Angabe eines Namens definiert werden muss, während implizite Cursor automatisch erstellt werden, wenn Sie eine select-Anweisung ausgeben. Darüber hinaus können mehrere Zeilen mithilfe expliziter Cursor abgerufen werden, während implizite Cursor nur eine einzige Zeile abrufen können. NO_DATA_FOUND- und TOO_MANY_ROWS-Ausnahmen werden bei Verwendung expliziter Cursor im Gegensatz zu impliziten Cursor nicht ausgelöst. Im Wesentlichen sind implizite Cursor anfälliger für Datenfehler und bieten weniger programmatische Steuerung als explizite Cursor. Implizite Cursor gelten auch als weniger effizient als explizite Cursor.