Oracle eksplicitte markører - dem skal du fysisk erklære - lad dig fjerne " enkelt række " begrænsning af fælles SELECT-sætninger . I stedet for at kopiere og lagring søjleværdier i SELECT-sætning variable én række ad gangen, giver eksplicitte markører for dig at køre en forespørgsel , skal du gemme en samling af værdier i hukommelsen og gå tilbage og behandle hver post individuelt. Dette er ikke kun reducerer sagsbehandlingstiden , men også reducerer mængden af kode du skal skrive . Automatisere processen og yderligere reducere kodning krav ved hjælp af en markør i rec løkke igennem og hente flere databaseposter. Instruktioner
1
Opret eller erklære markøren som normalt ved at give det et unikt navn , binde den til et fælles SELECT-sætning , og derefter vedhæfte det til erklæringen afsnit af din funktion eller proces. SELECT-sætningen kan være simple eller kan være mere komplekse, såsom en SELECT /HVOR /GROUPBY erklæring. Hvis du for eksempel , du ønsker at bruge en markør i rec loop til at hente den aktuelle månedsløn for hver af dine medarbejdere, og derefter alt disse beløb , vil erklæringen erklæring vises som : Hej
CREATE OR REPLACE Function SalaryExpense ( name_in IN varchar2 ) RETURN varchar2IStotal_val nummer ( 6)
DECLARE cursor salary_cursor isselect monthly_salaryfrom employeeswhere name = name_in ,
BEGIN
( reference 1 - side 6 , 7 og reference 2 )
2
Skriv en looping erklæring , der automatisk åbner markøren , adgang hver enkelt medarbejder rekord, udtrækker månedsløn oplysninger, du har brug for at beregne din månedlige løn regning og tilføjer hver værdi til en løbende total . Når sløjfen når den sidste rekord, det automatisk lukker cursoren : Hej
total_monthy_salary : = 0;
FOR employee_rec i salary_cursorLOOPtotal_monthy_salary : = total_monthy_salary + employee_rec.monthly_salary , END LOOP ;
< br >
3
vise resultaterne og afslutte funktionen eller proces : Hej
RETURN total_monthy_salary , END ,