Kazalec Oracle PL / SQL: implicitni, eksplicitni, kazalnik FOR Loop (primer)

Kazalo:

Anonim

Kaj je CURSOR v PL / SQL?

Kazalec je kazalec na to kontekstno območje. Oracle ustvari kontekstno območje za obdelavo stavka SQL, ki vsebuje vse informacije o stavku.

PL / SQL programerju omogoča, da preko kazalca nadzoruje območje konteksta. Kazalec vsebuje vrstice, ki jih vrne stavek SQL. Niz vrstic, ki ga ima kurzor, se imenuje aktivni niz. Te kazalce lahko poimenujete tudi tako, da jih je mogoče napotiti z drugega mesta kode.

V tej vadnici boste izvedeli-

  • Implicitni kazalnik
  • Izrecni kazalec
  • Atributi kazalca
  • Izjava za kazalec zanke

Kazalec je dveh vrst.

  • Implicitni kazalnik
  • Izrecni kazalec

Implicitni kazalnik

Kadar koli se v bazi podatkov zgodi katera koli operacija DML, se v tej operaciji ustvari implicitni kurzor, ki vsebuje prizadete vrstice. Teh kazalcev ni mogoče poimenovati in jih zato ni mogoče nadzorovati ali napotiti z drugega mesta kode. Skozi atribute kurzorja se lahko sklicujemo samo na najnovejši kazalec.

Izrecni kazalec

Programerji lahko ustvarijo imenovano kontekstno območje za izvajanje svojih operacij DML, da dobijo večji nadzor nad njim. Izrecni kurzor je treba definirati v odseku deklaracije bloka PL / SQL in ustvarjen je za stavek 'SELECT', ki ga je treba uporabiti v kodi.

Spodaj so navedeni koraki za delo z eksplicitnimi kazalci.

  • Izjava kurzorja

    Deklaracija kurzorja preprosto pomeni ustvariti eno imenovano področje konteksta za stavek 'SELECT', ki je definiran v delu deklaracije. Ime tega kontekstnega območja je enako imenu kurzorja.

  • Odpiranje kurzorja

    Če odprete kurzor, boste PL / SQL dobili navodilo, naj dodeli pomnilnik za ta kazalec. Kazalec bo pripravljen za prenos zapisov.

  • Pridobivanje podatkov iz kazalca

    V tem postopku se izvede stavek 'SELECT' in pridobljene vrstice se shranijo v dodeljenem pomnilniku. Ti se zdaj imenujejo aktivni nizi. Pridobivanje podatkov s kazalca je dejavnost na ravni zapisa, kar pomeni, da lahko do podatkov dostopamo na način za zapis.

    Vsak stavek za pridobivanje bo prinesel en aktivni niz in vsebuje informacije o tem zapisu. Ta stavek je enak stavku 'SELECT', ki pridobi zapis in dodeli spremenljivki v stavku 'INTO', vendar ne bo povzročil nobenih izjem.

  • Zapiranje kurzorja

    Ko je zdaj že ves zapis, moramo zapreti kazalko, da se sprosti pomnilnik, dodeljen temu kontekstnemu območju.

Sintaksa:

DECLARECURSOR  IS ;BEGINFOR I IN LOOP… END LOOP;END;
  • V zgornji sintaksi del izjave vsebuje izjavo kazalca.
  • Kazalec je ustvarjen za stavek 'SELECT', ki je podan v deklaraciji kurzorja.
  • V izvedbenem delu je deklarirani kurzor nastavljen v zanko FOR in spremenljivka zanke 'I' se bo v tem primeru obnašala kot spremenljivka kurzorja.

Primer 1 : V tem primeru bomo projicirali vsa imena zaposlenih iz tabele emp s pomočjo zanke kurzor-FOR.

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;/

Izhod

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Razlaga kode:

  • Vrstica kode 2 : razglasitev kazalca guru99_det za stavek 'SELECT emp_name FROM emp'.
  • Vrstica kode 4 : Konstruiranje zanke 'FOR' za kazalko s spremenljivko zanke lv_emp_name.
  • Vrstica kode 5: Tiskanje imena zaposlenega v vsaki ponovitvi zanke.
  • Vrstica kode 8: Zapustite zanko

Opomba: V zanki Cursor-FOR atributov kurzorja ni mogoče uporabiti, saj odpiranje, pridobivanje in zapiranje kurzorja implicitno izvaja zanka FOR.