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

Cuprins:

Anonim

Ce este CURSOR în PL / SQL?

Un cursor este un indicator către această zonă contextuală. Oracle creează o zonă contextuală pentru procesarea unei instrucțiuni SQL care conține toate informațiile despre instrucțiune.

PL / SQL permite programatorului să controleze zona de context prin intermediul cursorului. Un cursor reține rândurile returnate de instrucțiunea SQL. Setul de rânduri pe care le ține cursorul este denumit set activ. Acești cursori pot fi, de asemenea, numiți astfel încât să poată fi direcționați dintr-un alt loc al codului.

În acest tutorial veți învăța-

  • Cursor implicit
  • Cursor explicit
  • Atribute ale cursorului
  • Pentru declarația cursorului buclei

Cursorul este de două tipuri.

  • Cursor implicit
  • Cursor explicit

Cursor implicit

Ori de câte ori apar operații DML în baza de date, se creează un cursor implicit care reține rândurile afectate, în acea operație specială. Acești cursori nu pot fi numiți și, prin urmare, nu pot fi controlați sau menționați dintr-un alt loc al codului. Ne putem referi doar la cel mai recent cursor prin atributele cursorului.

Cursor explicit

Programatorilor li se permite să creeze o zonă contextuală numită pentru a-și executa operațiunile DML pentru a obține mai mult control asupra acesteia. Cursorul explicit trebuie definit în secțiunea de declarație a blocului PL / SQL și este creat pentru instrucțiunea „SELECT” care trebuie utilizată în cod.

Mai jos sunt pașii care implică lucrul cu cursoare explicite.

  • Declararea cursorului

    Declararea cursorului înseamnă pur și simplu crearea unei zone de context denumite pentru declarația „SELECT” care este definită în partea de declarație. Numele acestei zone de context este același cu numele cursorului.

  • Se deschide cursorul

    Deschiderea cursorului va instrui PL / SQL să aloce memoria pentru acest cursor. Acesta va pregăti cursorul să preia înregistrările.

  • Preluarea datelor de la cursor

    În acest proces, se execută instrucțiunea „SELECT” și rândurile preluate sunt stocate în memoria alocată. Acestea sunt acum numite seturi active. Preluarea datelor de la cursor este o activitate la nivel de înregistrare, ceea ce înseamnă că putem accesa datele într-un mod înregistrare cu înregistrare.

    Fiecare instrucțiune de preluare va prelua un set activ și deține informațiile respectivei înregistrări. Această instrucțiune este aceeași cu instrucțiunea „SELECT” care preia înregistrarea și atribuie variabilei din clauza „INTO”, dar nu va arunca excepții.

  • Închiderea cursorului

    Odată ce toată înregistrarea este preluată acum, trebuie să închidem cursorul, astfel încât memoria alocată acestei zone de context să fie eliberată.

Sintaxă:

DECLARECURSOR  IS ;BEGINFOR I IN LOOP… END LOOP;END;
  • În sintaxa de mai sus, partea de declarație conține declarația cursorului.
  • Cursorul este creat pentru declarația „SELECT” care este dată în declarația cursorului.
  • În partea de execuție, cursorul declarat este configurat în bucla FOR și variabila de buclă „I” se va comporta ca variabilă de cursor în acest caz.

Exemplul 1 : În acest exemplu, vom proiecta tot numele angajatului din tabela emp folosind o buclă cursor-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;/

Ieșire

Employee Fetched:BBBEmployee Fetched:XXXEmployee Fetched:YYY

Explicatie cod:

  • Linia de cod 2 : Declararea cursorului guru99_det pentru declarația „SELECT emp_name FROM emp”.
  • Linia de cod 4 : Construirea buclei 'FOR' pentru cursor cu variabila de buclă lv_emp_name.
  • Linia de cod 5: Tipărirea numelui angajatului în fiecare iterație a buclei.
  • Linia de cod 8: Ieșiți din buclă

Notă: În bucla Cursor-FOR, atributele cursorului nu pot fi utilizate deoarece deschiderea, preluarea și închiderea cursorului se face implicit de bucla FOR.