Oracle PL / SQL Cursor: Implicit, Explicit, Cursor FOR Loop (Eksempel)

Indholdsfortegnelse:

Anonim

Hvad er CURSOR i PL / SQL?

En markør er en markør til dette kontekstområde. Oracle opretter kontekstområde til behandling af en SQL-sætning, der indeholder alle oplysninger om udsagnet.

PL / SQL giver programmøren mulighed for at kontrollere kontekstområdet gennem markøren. En markør indeholder de rækker, der returneres af SQL-sætningen. Sættet af rækker, som markøren holder, kaldes aktivt sæt. Disse markører kan også navngives, så de kan henvises fra et andet sted i koden.

I denne vejledning lærer du-

  • Implicit markør
  • Eksplicit markør
  • Markørattributter
  • FOR Loop Cursor statement

Markøren er af to typer.

  • Implicit markør
  • Eksplicit markør

Implicit markør

Når der opstår DML-operationer i databasen, oprettes der en implicit markør, der holder de berørte rækker i den pågældende operation. Disse markører kan ikke navngives, og de kan derfor ikke kontrolleres eller henvises fra et andet sted i koden. Vi kan kun henvise til den seneste markør gennem markørattributterne.

Eksplicit markør

Programmører har lov til at oprette navngivet kontekstområde for at udføre deres DML-operationer for at få mere kontrol over det. Den eksplicitte markør skal defineres i erklæringsafsnittet i PL / SQL-blokken, og den oprettes til sætningen 'SELECT', der skal bruges i koden.

Nedenfor er trin, der involverede i arbejdet med eksplicitte markører.

  • Erklæring om markøren

    At erklære markøren betyder simpelthen at oprette et navngivet kontekstområde til 'SELECT' -sætningen, der er defineret i erklæringsdelen. Navnet på dette kontekstområde er det samme som markørnavnet.

  • Åbning af markør

    Åbning af markøren vil bede PL / SQL om at tildele hukommelsen til denne markør. Det gør markøren klar til at hente poster.

  • Henter data fra markøren

    I denne proces udføres 'SELECT'-sætningen, og de hentede rækker lagres i den tildelte hukommelse. Disse kaldes nu som aktive sæt. At hente data fra markøren er en aktivitet på postniveau, der betyder, at vi kan få adgang til dataene på en record-for-record-måde.

    Hver hentningserklæring henter et aktivt sæt og indeholder oplysningerne om den pågældende post. Denne sætning er den samme som 'SELECT' -erklæring, der henter posten og tildeler variablen i 'INTO' -klausulen, men den giver ingen undtagelser.

  • Lukning af markøren

    Når hele posten er hentet nu, skal vi lukke markøren, så den hukommelse, der er allokeret til dette kontekstområde, frigives.

Syntaks:

DECLARECURSOR  IS ;BEGINFOR I IN LOOP… END LOOP;END;
  • I ovenstående syntaks indeholder erklæringsdelen markørens erklæring.
  • Markøren oprettes til 'VÆLG' udsagnet, der er angivet i markørerklæringen.
  • I udførelsesdelen er den erklærede markør opsat i FOR-sløjfen, og sløjfevariablen 'I' opfører sig som markørvariabel i dette tilfælde.

Eksempel 1 : I dette eksempel projicerer vi hele medarbejdernavnet fra EMP-tabel ved hjælp af en cursor-FOR-loop.

DECLARECURSOR guru99_det IS SELECT emp_name FROM emp;BEGINFOR lv_emp_name IN guru99_detLOOPDbms_output.put_line(‘Employee Fetched:‘||lv_emp_name.emp_name);END LOOP;END;/

Produktion

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Kode Forklaring:

  • Kodelinje 2 : Erklæring om markøren guru99_det for udsagn 'VÆLG emp_name FRA emp'.
  • Kodelinje 4 : Konstruktion af 'FOR' loop til markøren med loop variablen lv_emp_name.
  • Kodelinje 5: Udskrivning af medarbejdernavnet i hver iteration af sløjfen.
  • Kodelinje 8: Afslut sløjfen

Bemærk: I Cursor-FOR-loop kan markørattributter ikke bruges, da åbning, hentning og lukning af markøren implicit foretages af FOR-loop.