Stærke referencemarkører med tabelbaseret registreringsdatatype
Som vi lærte i introduktionen til Ref Cursors, er der to typer PL/SQL Ref Cursors i Oracle Database.
- Stærke referencemarkører og
- Svage referencemarkører
Vi vil udforske alle koncepterne for begge disse typer Ref Cursorer i denne serie. Med denne blog vil vi starte med den første, der er Strong Ref Cursors med tabelbaseret record datatype og med brugerdefineret record datatype.
Hvad er PL/SQL Strong Ref Cursorer i Oracle-databasen?
En ref-markør, som har en fast returtype, kaldes en Strong Ref-markør i Oracle Database. På grund af fast returtype kan stærke ref-markører kun bruges selektivt. For eksempel med de SELECT-sætninger, der returnerer resultatet, hvis datatype matcher den, du har rettet under markørens erklæring.
Kan vi bruge Strong Ref Cursor med en hvilken som helst SELECT-sætning i Oracle Database?
Nej, vi kan ikke bruge Strong Ref Cursors med nogen SELECT-sætning. Dette er på grund af den faste 'Returtype'.
Ikke desto mindre kan den kun bruges med de SELECT-sætninger, der returnerer resultatet, hvis datatype matcher med 'Return-klausul' på markøren.
Kan vi bruge nogen PL/SQL-datatyper til at angive vores Strong Ref Cursor?
Nej vi kan ikke. Desuden skal returtypen for en stærk ref-markør altid være en Record Datatype. Det kan enten være en tabelbaseret postdatatype eller en brugerdefineret postdatatype.
Eksempel på stærke referencemarkører med tabelbaseret registreringsdatatype
Lad os skrive et eksempel. Her vil vi oprette en Strong Ref Cursor med Tabel Baseret Record Datatype.
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; /
Oprettelse af en referencemarkør er en to-trins proces.
Opret en ref pointertype.
Først skal vi oprette en ref pointer type. Ved at bruge TYPE-sætningen opretter vi en Ref Cursor Type-peger ligesom i ovenstående kode. I denne erklæring skriver du først nøgleordet TYPE efterfulgt af navnet på din ref-markør. Derefter skal du skrive en reserveret sætning IS REF CURSOR. Det vil fortælle compileren, at vi opretter en type, som er REF CURSOR. Efterfulgt af det skal du angive RETURN-klausulen.
For eksempel
TYPE my_RefCur IS REF CURSOR RETURN employees%ROWTYPE;
Opret en markørvariabel
I det andet trin opretter vi en markørvariabel. For at oprette en cursorvariabel skal du først skrive navnet på din variabel efterfulgt af navnet på din Ref Cursor. Derefter vil denne variabel blive brugt til at henvise til den referencemarkør, som den er oprettet over.
For eksempel
cur_var my_RefCur;
Udover markørvariablen i ovenstående kode har vi også en ekstra variabel. Dette er igen af tabelbaseret postdatatype og designet ved hjælp af 'Medarbejdere'-tabel. Desuden vil denne variabel indeholde de data, der hentes fra markøren.
rec_var employees%ROWTYPE;
Udførelsessektion
I udførelsessektionen af vores kode har vi fire eksekverbare sætninger. Lad mig forklare dig disse.
-
ÅBEN FOR erklæring
Den første erklæring er OPEN FOR erklæringen. Den knytter SELECT-sætningen til Cursors variabel og åbner markøren for sætningen. Desuden leder den også efter alle de ressourcer, der kræves til at behandle SELECT-sætningen.
-
FETCH-erklæring
Som vi diskuterede i PL/SQL tutorial 26. Processen med at hente data fra markøren kaldes hentning. Derfor henter vi her dataene fra Ref Cursoren ind i postvariablen 'Rec_Var'.
-
Luk erklæring
Når vi er færdige med vores markør, er det tilrådeligt at lukke den, så vores Oracle Engine / Server kan afgive alle de ressourcer, der er forbundet med den. Det er præcis, hvad vi har gjort i den tredje udtalelse. Ved at bruge CLOSE nøgleordet efterfulgt af cursorvariablen lukkede vi vores ref cursor.
-
Outputerklæring
Fjerde sætning er en DBMS_OUTPUT sætning. Det vil vise fornavnet og lønnen for medarbejderen med medarbejder-id 100.
Du kan se PL/SQL tutorial 33 for at lære, hvordan en tabelbaseret postvariabel fungerer.
Derfor i konklusion...
I ovenstående kode oprettede vi en PL/SQL Strong Ref Cursor med navnet 'my_RefCur', som returnerer en resultattabelbaseret datatype. Ydermere understøttes denne tabelbaserede registreringsdatatype på HR-skemaets medarbejderes tabel. Før vi udfører dette program, skal vi derfor sikre os, at vi er forbundet til vores databases HR-skema.
Desuden, hvis du lærer bedre ved at se video, så er her en til dig. Gå videre og tjek det ud.
Det er tutorialen om, hvordan man opretter PL/SQL stærke Ref-markører ved hjælp af tabelbaseret postdatatype i Oracle Database. Håber du har lært noget nyt. Derudover skal du sørge for at dele denne blog på dine sociale medier med dine venner.
Tak for besøget. Hold dig opdateret, da vi i næste selvstudie lærer, hvordan du opretter en stærk ref-markør med brugerdefineret registreringsvariabel.
Hav en god dag!