Oracle markør for loop

Oracle markør for loop
En markør for loop er en type for sløyfe som lar deg hente og behandle radene fra en databasemarkør uten å bekymre deg for å håndtere utførelsessyklusen manuelt.

En markør for loop er en forlengelse av for -loopen i PL/SQL og lar deg utføre en kodeblokk for hver rad i et resulterende sett. Dette er veldig nyttig, da det lar deg raskt og effektivt utføre omfattende beregninger i en enkelt beregning uten å laste inn dataene i minnet.

Oracle markør for loop

For Loop henter en rad fra det resulterende settet inn i loopindeksen for hver iterasjon. Hvis det ikke er noen rad, lukker for loop markøren.

Følgende viser den grunnleggende syntaksen til markøren for sløyfe i Oracle:

For rekord i markørnavn
LØKKE
-- Bruk denne blokken på hver rad
Endesløyfe;

I den medfølgende syntaksen representerer posten variabelnavnet som forhåndspresenterer hver rad i markøren.

Cursor_name in the Loop spesifiserer en eksplisitt markør som du ønsker å sløyfe gjennom. Merk at en markør må være åpen og hentet inn i posten før du bruker den i en markør for loop.

Hvis du ikke ønsker å lage en eksplisitt markør, oppretter for -loopen implisitt en løkkeindeks som en postvariabel av %radtype når du hopper over cursor_name.

Oracle Markør for sløyfeeksempel

La oss se på noen grunnleggende eksempler på markøren for Loop in Oracle Databases.

erklære
Markør emp_cursor er
Velg First_name, Last_name
fra ansatte;
begynne
for ansatt i emp_cursor
Løkke
Dbms_output.Put_line (ansatt.First_name || "|| Ansatt.etternavn);
endesløyfe;
slutt;

I den oppgitte koden erklærer vi en markør som heter emp_cursor. Vi befolker deretter denne markøren med dataene fra de ansattes tabell ved hjelp.

Deretter bruker vi en markør for loop for å hente og behandle dataene i hver rad fra resultatsettet. Merk at den ansattvariabelen lagrer hver rad i emp_cursor.

Loopen sammenkobler det første_navnet og Last_name kolonnene og skriver ut resultatet ved å bruke DBMS_Output.Put_line -funksjonen.

Databasemotoren lukker automatisk markøren når sløyfen avsluttes.

Dette bør returnere følgende resultater, og demonstrere hvordan vi kan bruke en eksplisitt markørdefinisjon for å behandle data fra en tabell:

Oracle Implicit Markør

Hvis du ikke ønsker å lage en eksplisitt markør, kan du la databasemotoren lage en og administrere den for deg ved å utelate markørnavnet som vist i følgende:

BEGYNNE
For ansatt i (velg First_name, Last_name
Fra ansatte) loop
Dbms_output.Put_line (ansatt.First_name || "|| Ansatt.etternavn);
Endesløyfe;
SLUTT;

Dette bør gi et lignende resultat som en eksplisitt markør.

Konklusjon

I dette innlegget kom du over markøren for loop i Oracle -databaser for å hente og behandle hver rad fra et resultatsett.