Oracle eksplisitte pekere - de du må fysisk erklære - la deg fjerne "single row" begrensning av felles SELECT-setninger . I stedet for å kopiere og lagre kolonneverdiene i SELECT-setningen variabler én rad om gangen , eksplisitte pekere tillate deg å kjøre en spørring , lagre en samling verdier i minnet og gå tilbake og behandle hver post individuelt . Dette reduserer ikke bare saksbehandlingstid , men også reduserer mengden med kode du trenger å skrive . Automatisere prosessen og ytterligere redusere koding krav ved hjelp av en markør FOR rec sløyfe til sløyfe og hente flere database poster. Instruksjoner
en
Opprett eller erklære markøren som vanlig ved å gi den et unikt navn , binde den til et felles SELECT-setning , og deretter legge det til erklæringen delen av funksjon eller prosess . SELECT-setningen kan være enkle eller kan være mer komplisert , for eksempel en SELECT /hvor /GROUPBY uttalelse. Hvis du for eksempel ønsker å bruke en markør FOR rec loop for å hente den nåværende månedslønn for hver av dine ansatte og deretter summere disse beløpene , vil erklæringen uttalelsen vises som : en
CREATE OR REPLACE Function SalaryExpense ( name_in I varchar2 ) RETURN varchar2IStotal_val nummer ( 6 ) ;
DECLARE markør salary_cursor isselect monthly_salaryfrom employeeswhere name = name_in ;
START
( Referanse 1 - side 6 , 7 og Reference 2 )
2
Skriv en looping uttalelse som automatisk åpner markøren , åpner hver ansatt posten, trekker den månedlige lønnen informasjonen du trenger for å beregne dine månedlige lønnskostnad og legger hver verdi til en løpende sum . Når løkken når den siste posten , lukkes den automatisk markøren : en
total_monthy_salary : = 0 ;
FOR employee_rec i salary_cursorLOOPtotal_monthy_salary : = total_monthy_salary + employee_rec.monthly_salary ; END LOOP ;
3
vise resultatene og avslutte funksjonen eller prosess : en
RETURN total_monthy_salary ; END ;