sql >> Database >  >> RDS >> Database

Sterke ref-cursors met op tabel gebaseerde recordgegevenstype

Sterke verwijzingscursors met op tabel gebaseerde recordgegevenstype

Zoals we in de inleiding tot Ref Cursors hebben geleerd dat er twee soorten PL/SQL Ref Cursors zijn in Oracle Database.

  1. Sterke referentiecursors en
  2. Zwakke ref-cursors

We zullen in deze serie alle concepten van beide typen ref-cursors onderzoeken. Met deze blog beginnen we met de eerste, namelijk de Strong Ref Cursors met op tabellen gebaseerd recordgegevenstype en met door de gebruiker gedefinieerd recordgegevenstype.

Wat zijn PL/SQL Strong-referentiecursors in Oracle Database?

Een ref-cursor met een vast retourtype wordt in Oracle Database een Strong Ref Cursor genoemd. Vanwege het vaste retourtype kunnen sterke ref-cursors alleen selectief worden gebruikt. Bijvoorbeeld met die SELECT-instructies die het resultaat retourneren waarvan het datatype overeenkomt met degene die u hebt vastgesteld tijdens de declaratie van de cursor.

Kunnen we Strong Ref Cursor gebruiken met een SELECT-instructie in Oracle Database?

Nee, we kunnen geen Strong Ref Cursors gebruiken met een SELECT-instructie. Dit komt door het vaste 'Retourtype'.

Desalniettemin kan het alleen worden gebruikt met die SELECT-instructies die het resultaat retourneren waarvan het datatype overeenkomt met de 'Return Clause' van de cursor.

Kunnen we PL/SQL-datatypes gebruiken om onze Strong Ref Cursor te declareren?

Nee we kunnen niet. Bovendien moet het retourtype van een sterke ref-cursor altijd een Record Datatype zijn. Het kan een op tabel gebaseerd record zijn of een door de gebruiker gedefinieerd record.

Voorbeeld van sterke ref-cursors met op tabel gebaseerd recordgegevenstype

Laten we een voorbeeld schrijven. Hier zullen we een Strong Ref Cursor maken met tabelgebaseerd recordgegevenstype.

 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;
/

Het maken van een referentiecursor is een proces in twee stappen.

Maak een ref-aanwijzertype.

Eerst moeten we een ref-pointertype maken. Dus met behulp van de TYPE-instructie maken we een Ref Cursor Type-aanwijzer, net als in de bovenstaande code. In dit statement schrijf je eerst het trefwoord TYPE gevolgd door de naam van je ref cursor. Daarna moet je een gereserveerde zin schrijven IS REF CURSOR. Het zal de compiler vertellen dat we een type maken dat REF CURSOR is. Daarna moet u de RETURN-clausule specificeren.

Bijvoorbeeld

TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;

Maak een cursorvariabele

In de tweede stap maken we een cursorvariabele aan. Om een ​​cursorvariabele te maken, moet u eerst de naam van uw variabele schrijven, gevolgd door de naam van uw Ref Cursor. Daarna zal deze variabele worden gebruikt om te verwijzen naar de Ref Cursor waarover deze is gemaakt.

Bijvoorbeeld

cur_var my_RefCur;

Naast de Cursorvariabele in de bovenstaande code hebben we ook een extra variabele. Dit is opnieuw van het op tabellen gebaseerde recordgegevenstype en ontworpen met behulp van de tabel 'Werknemers'. Bovendien zal deze variabele de gegevens bevatten die van de cursor zijn opgehaald.

rec_var     employees%ROWTYPE;

Uitvoeringssectie

In de uitvoeringssectie van onze code hebben we vier uitvoerbare instructies. Laat me je deze uitleggen.

  1. OPEN FOR statement

Het eerste statement is het OPEN FOR statement. Het koppelt de SELECT-instructie aan de variabele van Cursor en opent de cursor voor de instructie. Verder zoekt het ook naar alle bronnen die nodig zijn voor het verwerken van de SELECT-instructie.

  1. FETCH-instructie

Zoals we hebben besproken in PL/SQL-zelfstudie 26. Het proces van het ophalen van gegevens van de cursor wordt ophalen genoemd. Daarom halen we hier de gegevens van de Ref Cursor in de recordvariabele 'Rec_Var'.

  1. Sluit verklaring

Zodra we klaar zijn met onze cursor, is het raadzaam om deze te sluiten, zodat onze Oracle Engine / Server afstand kan doen van alle bijbehorende bronnen. Dat is precies wat we in de derde verklaring hebben gedaan. Met het trefwoord CLOSE gevolgd door de cursorvariabele hebben we onze ref-cursor gesloten.

  1. Uitvoerverklaring

De vierde instructie is een DBMS_OUTPUT-instructie. Het toont de voornaam en het salaris van de werknemer met werknemer-ID 100.

U kunt PL/SQL-zelfstudie 33 bekijken om de werking van een tabelgebaseerde recordvariabele te leren.

Dus tot slot…

In de bovenstaande code hebben we een PL/SQL Strong Ref Cursor gemaakt met de naam 'my_RefCur' die een op een resultaattabel gebaseerd recordgegevenstype retourneert. Bovendien wordt dit op tabellen gebaseerde recordgegevenstype ondersteund in de tabel Werknemers van het HR-schema. Dus voordat we dit programma uitvoeren, moeten we ervoor zorgen dat we zijn verbonden met het HR-schema van onze database.

Bovendien, als je beter leert door video te bekijken, dan is dit er een voor jou. Ga je gang en bekijk het.

Dat is de tutorial over hoe u sterke PL/SQL-referentiecursors kunt maken met behulp van op tabellen gebaseerde recordgegevenstypes in Oracle Database. Hoop dat je iets nieuws hebt geleerd. Zorg er daarnaast voor dat je deze blog op je sociale media deelt met je vrienden.

Bedankt voor het bezoeken. Blijf op de hoogte, want in de volgende tutorial zullen we leren hoe we een sterke ref-cursor kunnen maken met een door de gebruiker gedefinieerde recordvariabele.

Fijne dag!


  1. Wachtgebeurtenissen SQL Server -2

  2. Alle objectrechten voor een specifieke rol ophalen

  3. Het kolomgegevenstype wijzigen van teken in numeriek in PostgreSQL 8.4

  4. Hoe een opgeslagen procedure in MySQL te maken