Database
 sql >> Datenbank >  >> RDS >> Database

Starke Ref-Cursor mit tabellenbasiertem Datensatzdatentyp

Starke Ref-Cursor mit tabellenbasiertem Datensatzdatentyp

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

  1. Starke Ref-Cursor und
  2. Schwache Ref-Cursor

Wir werden alle Konzepte dieser beiden Arten von Ref-Cursor in dieser Serie untersuchen. Mit diesem Blog beginnen wir mit dem ersten, nämlich den Strong Ref Cursors mit tabellenbasiertem Datensatzdatentyp und mit benutzerdefiniertem Datensatzdatentyp.

Was sind PL/SQL-Strong-Ref-Cursor in der Oracle-Datenbank?

Ein Ref-Cursor mit festem Rückgabetyp wird in der Oracle-Datenbank als Strong Ref-Cursor bezeichnet. Aufgrund des festen Rückgabetyps können Strong-Ref-Cursor nur selektiv verwendet werden. Zum Beispiel mit diesen SELECT-Anweisungen, die das Ergebnis zurückgeben, dessen Datentyp mit dem übereinstimmt, den Sie während der Deklaration des Cursors festgelegt haben.

Können wir Strong Ref Cursor mit jeder SELECT-Anweisung in Oracle Database verwenden?

Nein, wir können Strong Ref Cursors nicht mit irgendeiner SELECT-Anweisung verwenden. Das liegt an dem festen ‚Return Type‘.

Trotzdem kann es nur mit solchen SELECT-Anweisungen verwendet werden, die das Ergebnis zurückgeben, dessen Datentyp mit der ‚Rückgabeklausel‘ des Cursors übereinstimmt.

Können wir beliebige PL/SQL-Datentypen zum Deklarieren unseres Strong Ref-Cursors verwenden?

Nein Wir können nicht. Außerdem muss der Rückgabetyp eines Strong-Ref-Cursors immer ein Record-Datentyp sein. Es kann entweder ein tabellenbasierter Datensatzdatentyp oder ein benutzerdefinierter Datensatzdatentyp sein.

Beispiel für starke Ref-Cursor mit tabellenbasiertem Datensatzdatentyp

Schreiben wir ein Beispiel. Hier erstellen wir einen starken Ref-Cursor mit tabellenbasiertem Datensatzdatentyp.

 SET SERVEROUTPUT ON
 DECLARE
    	/*Create Ref Pointer Type*/
	TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;
	/*Create Cursor Variable*/
	cur_var my_RefCur;
	rec_var     employees%ROWTYPE;
 BEGIN
	OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100;
	FETCH cur_var INTO rec_var;
	CLOSE cur_var;
	DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.');
END;
/

Das Erstellen eines Ref-Cursors ist ein zweistufiger Prozess.

Erstellen Sie einen Referenzzeigertyp.

Zuerst müssen wir einen Referenzzeigertyp erstellen. Daher erstellen wir mit der TYPE-Anweisung einen Ref-Cursor-Type-Zeiger, genau wie im obigen Code. In diese Anweisung schreiben Sie zuerst das Schlüsselwort TYPE, gefolgt vom Namen Ihres Ref-Cursors. Danach müssen Sie eine reservierte Phrase IS REF CURSOR schreiben. Es teilt dem Compiler mit, dass wir einen Typ erstellen, der REF CURSOR ist. Danach müssen Sie die RETURN-Klausel angeben.

Zum Beispiel

TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;

Cursor-Variable erstellen

Im zweiten Schritt erstellen wir eine Cursor-Variable. Um eine Cursor-Variable zu erstellen, müssen Sie zuerst den Namen Ihrer Variablen schreiben, gefolgt vom Namen Ihres Ref-Cursors. Danach wird diese Variable verwendet, um auf den Ref-Cursor zu verweisen, über dem sie erstellt wird.

Zum Beispiel

cur_var my_RefCur;

Abgesehen von der Cursor-Variable im obigen Code haben wir auch eine zusätzliche Variable. Dies ist wiederum ein tabellenbasierter Datensatzdatentyp und wurde mit der Tabelle „Mitarbeiter“ entworfen. Außerdem enthält diese Variable die vom Cursor abgerufenen Daten.

rec_var     employees%ROWTYPE;

Ausführungsabschnitt

Im Ausführungsabschnitt unseres Codes haben wir vier ausführbare Anweisungen. Lassen Sie mich Ihnen diese erklären.

  1. OPEN FOR-Anweisung

Die erste Anweisung ist die OPEN FOR-Anweisung. Es ordnet die SELECT-Anweisung der Cursor-Variablen zu und öffnet den Cursor für die Anweisung. Außerdem sucht es nach allen Ressourcen, die für die Verarbeitung der SELECT-Anweisung erforderlich sind.

  1. FETCH-Anweisung

Wie wir in PL/SQL-Tutorial 26 besprochen haben. Der Vorgang des Abrufens von Daten aus dem Cursor wird Abrufen genannt. Deshalb holen wir hier die Daten vom Ref-Cursor in die Datensatzvariable ‚Rec_Var‘.

  1. Anweisung schließen

Sobald wir mit unserem Cursor fertig sind, ist es ratsam, ihn zu schließen, damit unsere Oracle Engine / Server alle damit verbundenen Ressourcen freigeben kann. Genau das haben wir in der dritten Aussage getan. Mit dem Schlüsselwort CLOSE gefolgt von der Cursor-Variablen haben wir unseren Referenz-Cursor geschlossen.

  1. Ausgabeanweisung

Die vierte Anweisung ist eine DBMS_OUTPUT-Anweisung. Es zeigt den Vornamen und das Gehalt des Mitarbeiters mit der Mitarbeiter-ID 100 an.

Sie können sich das PL/SQL-Tutorial 33 ansehen, um die Funktionsweise einer tabellenbasierten Datensatzvariablen zu lernen.

Deshalb zum Schluss …

Im obigen Code haben wir einen PL/SQL-Strong-Ref-Cursor mit dem Namen „my_RefCur“ erstellt, der einen auf einer Ergebnistabelle basierenden Datensatzdatentyp zurückgibt. Darüber hinaus wird dieser tabellenbasierte Datensatzdatentyp in der Employees-Tabelle des HR-Schemas unterstützt. Daher müssen wir vor der Ausführung dieses Programms sicherstellen, dass wir mit dem HR-Schema unserer Datenbank verbunden sind.

Außerdem, wenn Sie besser lernen, indem Sie sich Videos ansehen, dann ist hier eines für Sie. Probieren Sie es aus.

Das ist das Tutorial zum Erstellen starker PL/SQL-Ref-Cursor mit tabellenbasiertem Datensatzdatentyp in Oracle Database. Ich hoffe, Sie haben etwas Neues gelernt. Stellen Sie außerdem sicher, dass Sie diesen Blog in Ihren sozialen Medien mit Ihren Freunden teilen.

Danke für den Besuch. Bleiben Sie dran, denn im nächsten Tutorial lernen wir, wie man einen starken Ref-Cursor mit einer benutzerdefinierten Datensatzvariablen erstellt.

Ich wünsche Ihnen einen schönen Tag!