Hvorfor PL/SQL svag ref-markør
I den forrige tutorial lærte vi, hvordan man henter data fra forskellige datatyper fra forskellige kolonner ved hjælp af den stærke ref-markør. De stærke ref-markører har en begrænsning, at de har en fast returtype, som kun kan være en record-datatype. Fast returtype gør dog en stærk ref-markør mindre udsat for fejl i applikationsudviklingen. Men dette kræver absolut et ekstra trin med at oprette en brugerdefineret datatype for registrering.
Så har vi ikke nogen alternativ måde at hente data fra forskellige datatyper ved hjælp af ref cursor, som ikke kræver oprettelse af en brugerdefineret postdatatype? Kan vi ikke oprette en ref-markør, som ikke har en fast returtype? Lad os finde ud af svarene på disse spørgsmål i denne blog.
Hvad er en PL/SQL Weak Ref Cursor i Oracle Database?
En ref-markør, som ikke har en fast returtype, kaldes en svag ref-markør.
Kan vi bruge Weak Ref Cursor med en hvilken som helst SELECT-sætning eller ej?
Ja vi kan. Fordi svage ref-markører ikke har en fast returtype som stærke ref-markører, er de derfor åbne for alle typer SELECT-sætninger. Dette gør dem også til de mest anvendte ref-markører i sammenligning med andre.
Jeg formoder, at du nu har fået svar på ovenstående spørgsmål. PL/SQL Weak Ref Cursor er den alternative måde at hente data fra forskellige datatyper på. Da svag ref-markør ikke har en fast returtype, er der derfor ikke behov for at oprette en separat postdatatype. Nu hvor vi har fjernet alle vores tvivl, er det tid til at se et eksempel, som vil hjælpe dig med at lære, hvordan du opretter PL/SQL svage ref-markører i Oracle Database.
Syntaks for svag ref-markør
TYPE ref_cursor_name IS REF CURSOR;
Eksempel:Sådan opretter du svag referencemarkør i Oracle-databasen
SET SERVEROUTPUT ON; DECLARE /*Declare Weak Ref Cursor*/ TYPE wk_RefCur IS REF CURSOR; /*Declare Cursor Variable of ref cursor type*/ cur_var wk_RefCur; /*Declare two "Anchored Datatype Variable" for holding data from the cursor*/ 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; /
Gå videre og prøv at udføre dette program for at se, hvad outputtet vil være. Hvis du vil, kan du også downloade dette script fra GIT-lageret. Her er links [Script / Git Repository ]
Hvis du lærer bedre ved at se videoer, så er her videovejledningen om PL/SQL svag ref markør.
Det er tutorial om, hvordan man opretter PL/SQL svag ref markør i Oracle Database. Så sørg for at abonnere på YouTube-kanalen. I den kommende tutorial vil vi lære, hvad der er Sys Ref Cursor i Oracle Database. Tak og god dag!