Starka referensmarkörer med tabellbaserad postdatatyp
Som vi lärde oss i introduktionen till Ref Cursors att det finns två typer av PL/SQL Ref Cursors i Oracle Database.
- Starka referensmarkörer och
- Svaga referensmarkörer
Vi kommer att utforska alla koncept för båda dessa typer av referensmarkörer i den här serien. Med den här bloggen börjar vi med den första som är Strong Ref Cursors med tabellbaserad postdatatyp och med användardefinierad postdatatyp.
Vad är PL/SQL Strong Ref Cursors i Oracle Database?
En ref-markör som har en fast returtyp kallas Strong Ref Cursor i Oracle Database. På grund av fast returtyp kan starka refmarkörer endast användas selektivt. Till exempel med de SELECT-satser som returnerar resultatet vars datatyp matchar den som du fixade under markörens deklaration.
Kan vi använda Strong Ref Cursor med någon SELECT-sats i Oracle Database?
Nej, vi kan inte använda Strong Ref Cursors med någon SELECT-sats. Detta beror på den fasta "Returtyp".
Ändå kan den endast användas med de SELECT-satser som returnerar resultatet vars datatyp matchar markörens 'Returklausul'.
Kan vi använda några PL/SQL-datatyper för att deklarera vår Strong Ref Cursor?
Nej vi kan inte. Dessutom måste returtypen för en stark ref-markör alltid vara en Record Datatype. Det kan antingen vara en tabellbaserad postdatatyp eller en användardefinierad postdatatyp.
Exempel på starka referensmarkörer med tabellbaserad postdatatyp
Låt oss skriva ett exempel. Här kommer vi att skapa en stark referensmarkör med tabellbaserad postdatatyp.
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; /
Skapandet av en referensmarkör är en process i två steg.
Skapa en ref-pekartyp.
Först måste vi skapa en ref-pekartyp. Med hjälp av TYPE-satsen skapar vi alltså en Ref Cursor Type-pekare precis som i koden ovan. I detta uttalande skriver du först nyckelordet TYPE följt av namnet på din referensmarkör. Därefter måste du skriva en reserverad fras IS REF CURSOR. Det kommer att berätta för kompilatorn att vi skapar en typ som är REF CURSOR. Följt av det måste du specificera RETURN-satsen.
Till exempel
TYPE my_RefCur IS REF CURSOR RETURN employees%ROWTYPE;
Skapa en markörvariabel
I det andra steget skapar vi en markörvariabel. För att skapa en markörvariabel måste du först skriva namnet på din variabel följt av namnet på din Ref Cursor. Därefter kommer denna variabel att användas för att referera till referensmarkören över vilken den skapas.
Till exempel
cur_var my_RefCur;
Förutom markörvariabeln i ovanstående kod har vi även en extra variabel. Detta är återigen en tabellbaserad postdatatyp och designad med hjälp av tabellen "Anställda". Dessutom kommer denna variabel att hålla data som hämtas från markören.
rec_var employees%ROWTYPE;
Utförandesektion
I exekveringssektionen av vår kod har vi fyra exekverbara satser. Låt mig förklara dessa för dig.
-
ÖPPEN FÖR uttalande
Det första påståendet är OPEN FOR-påståendet. Den associerar SELECT-satsen med Cursors variabel och öppnar markören för satsen. Dessutom letar den också efter alla resurser som krävs för att bearbeta SELECT-satsen.
-
FETCH-sats
Som vi diskuterade i PL/SQL handledning 26. Processen att hämta data från markören kallas för att hämta. Därför hämtar vi här data från Ref Cursor till postvariabeln 'Rec_Var'.
-
Stäng uttalande
När vi är klara med vår markör är det lämpligt att stänga den så att vår Oracle Engine / Server kan avstå från alla resurser som är associerade med den. Det är precis vad vi har gjort i det tredje uttalandet. Genom att använda nyckelordet CLOSE följt av markörvariabeln stängde vi vår ref-markör.
-
Utdatasats
Den fjärde satsen är en DBMS_OUTPUT-sats. Den kommer att visa förnamnet och lönen för den anställde med anställd-id 100.
Du kan titta på PL/SQL tutorial 33 för att lära dig hur en tabellbaserad postvariabel fungerar.
Därför sammanfattningsvis...
I ovanstående kod skapade vi en PL/SQL Strong Ref Cursor med namnet 'my_RefCur' som kommer att returnera en resultattabellbaserad postdatatyp. Dessutom stöds denna tabellbaserade postdatatyp i tabellen Anställda i HR-schemat. Innan vi kör detta program måste vi därför se till att vi är anslutna till HR-schemat i vår databas.
Om du dessutom lär dig bättre genom att titta på video så är här en för dig. Varsågod och kolla in det.
Det är handledningen om hur man skapar PL/SQL starka referensmarkörer med hjälp av tabellbaserad postdatatyp i Oracle Database. Hoppas du lärde dig något nytt. Se dessutom till att dela den här bloggen på dina sociala medier med dina vänner.
Tack för besöket. Håll utkik eftersom i nästa handledning kommer vi att lära oss hur man skapar en stark ref-markör med användardefinierad postvariabel.
Ha en bra dag!