Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So erstellen Sie PL/SQL SYS_REFCURSOR in der Oracle-Datenbank

PL/SQL SYS_REFCURSOR in Oracle-Datenbank

Wie wir in der Einführung zum Ref-Cursor gelernt haben, gibt es drei Arten von PL/SQL-Ref-Cursor in Oracle Database.

  1. Starker Verweis-Cursor
  2. Schwacher Ref-Cursor und
  3. SYS_REFCURSOR

Bisher haben wir in dieser Serie die Konzepte des starken und des schwachen Ref-Cursors behandelt. Der einzige Cursortyp, der noch unberührt ist, ist PL/SQL SYS_REFCURSOR in Oracle Database. Was wir in diesem Blog lernen werden.

Was ist PL/SQL SYS_REFCURSOR?

SYS_REFCURSOR ist ein vordefinierter Weak-Ref-Cursor, der in die Oracle-Datenbanksoftware integriert ist.

Wie hilft es uns, ein vordefinierter Ref-Cursor zu sein?

SYS_REFCURSOR ist ein vordefinierter schwacher Ref-Cursor, was bedeutet, dass wir ihn nicht in unserem Code definieren müssen, wie wir es mit dem expliziten schwachen Ref-Cursor im vorherigen Tutorial getan haben. Wie wir in diesem Tutorial gelernt haben, ist das Erstellen eines schwachen Ref-Cursors ein zweistufiger Prozess. Zuerst müssen Sie den „schwachen Ref-Cursor-Typ“ erstellen und dann müssen Sie „eine Cursor-Variable“ erstellen, die diesen Ref-Cursor verwendet.

Wenn Sie SYS_REFCURSOR verwenden, müssen Sie nur eine Cursorvariable erstellen und sonst nichts. SYS_REFCURSOR minimiert den ersten Schritt vollständig, in dem Sie den schwachen Ref-Cursortyp erstellen.

Sys_Refcursor ist also ein eingebauter Ref-Cursor, wo können wir seine Definition finden?

Die Definition von PL/SQL SYS_REFCURSOR finden Sie in einem Skript namens „stdspec.sql“. Sie finden dieses Skript in dem Verzeichnis, dessen Pfad wie folgt lautet. 

%ORACLE_HOME% \RDBMS\ADMIN\stdspec.sql

Die SYS_REFCURSOR-Definition sieht in etwa so aus:

Welche Art von Ref-Cursor ist ein SYS_REFCURSOR?

Wie oben in der Definition erwähnt, ist ein SYS_REFCURSOR ein schwacher Ref-Cursor.

Nun, da Sie fast alle Zweifel an SYS_REFCURSOR ausgeräumt haben. Ich möchte Ihnen nur noch eine letzte Frage stellen.

Info:Zwischen REF und CURSOR steht kein Leerzeichen. Es ist ein einzelnes Wort „RefCursor“.
Falsch:SYS_REF-CURSOR
Richtig:SYS_REFCURSOR

Warum sollte jemand einen schwachen Ref-Cursor deklarieren, wenn wir bereits einen vordefinierten haben?

Das ist eigentlich eine sehr gute Frage. Die Antwort auf diese Frage lautet Nein, wir müssen keinen schwachen Ref-Cursor explizit erstellen. Oracle minimierte die Notwendigkeit, einen schwachen Ref-Cursor zu erstellen, indem es SYS_REFCURSOR als Teil des Standardpakets seit Oracle Database 9i lieferte, obwohl die Option zum Erstellen eines solchen immer noch verfügbar ist.

Es ist wie eine persönliche Entscheidung, wenn jemand einen schwachen Ref-Cursor erstellen möchte, dann kann er das. Wenn nicht, dann haben sie SYS_REFCURSOR immer zur Verfügung. Mein lieber Freund Steven Feuerstein hat einen sehr guten Blogbeitrag geschrieben, der diese Frage beantwortet, den Sie hier lesen können.

Sehen wir uns ein sehr einfaches Beispiel an, das zeigt, wie ein PL/SQL SYS_REFCURSOR in Oracle Database verwendet wird.

Beispiel:Wie erstellt man PL/SQL SYS_REFCURSOR in Oracle Database?

SET SERVEROUTPUT ON;
DECLARE
    --Declare cursor variable of SYS_REFCURSOR type
    cur_var SYS_REFCURSOR;
    
    --Declare variables for holding data
    f_name  employees.first_name%TYPE;
    emp_sal employees.salary%TYPE;
BEGIN
OPEN cur_var FOR SELECT first_name, Salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO f_name, emp_sal;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE(f_name ||' '||emp_sal);
END;
/

Sie können sich das Video-Tutorial auf dem YouTube-Kanal ansehen, um eine detaillierte Erklärung des obigen Codes zu erhalten.

Ich hoffe, Sie hatten Spaß beim Lesen und haben etwas Neues gelernt. Bitte teilen Sie diesen Blog in Ihren sozialen Medien mit Ihren Freunden. Danke und einen schönen Tag.