Diferența Dintre Cursorul Explicit și Cursorul Implicit

Diferența Dintre Cursorul Explicit și Cursorul Implicit
Diferența Dintre Cursorul Explicit și Cursorul Implicit

Video: Diferența Dintre Cursorul Explicit și Cursorul Implicit

Video: Diferența Dintre Cursorul Explicit și Cursorul Implicit
Video: Oracle PLSQL - CURSOR (Implicit and Explicit) 2024, Mai
Anonim

Cursor explicit vs Cursor implicit

Când vine vorba de baze de date, un cursor este o structură de control care permite traversarea înregistrărilor dintr-o bază de date. Un cursor oferă un mecanism pentru atribuirea unui nume unei instrucțiuni SQL select și apoi poate fi folosit pentru a manipula informațiile din acea instrucțiune SQL. Cursorile implicite sunt create și utilizate automat de fiecare dată când este emisă o instrucțiune Select în PL / SQL, atunci când nu există un cursor definit în mod explicit. Cursorile explicite, așa cum sugerează și numele, sunt definite în mod explicit de către dezvoltator. În PL / SQL, un cursor explicit este de fapt o interogare numită definită folosind cursorul cuvântului cheie.

Ce este cursorul implicit?

Cursorile implicite sunt create automat și utilizate de Oracle de fiecare dată când este emisă o declarație selectată. Dacă se folosește un cursor implicit, sistemul de gestionare a bazei de date (SGBD) va efectua automat operațiile de deschidere, preluare și închidere. Cursorile implicite ar trebui utilizate numai cu instrucțiunile SQL care returnează un singur rând. Dacă instrucțiunea SQL returnează mai multe rânduri, utilizarea unui cursor implicit va introduce o eroare. Un cursor implicit este asociat automat fiecărei instrucțiuni Limbaj de manipulare a datelor (DML), și anume instrucțiunile INSERT, UPDATE și DELETE. De asemenea, un cursor implicit este utilizat pentru a procesa instrucțiunile SELECT INTO. Când preluați date utilizând cursoare implicite NO_DATA_FOUND excepția poate fi ridicată atunci când instrucțiunea SQL nu returnează date. În plus,cursorii implicați pot ridica excepții TOO_MANY_ROWS atunci când instrucțiunea SQL returnează mai mult de un rând.

Ce este cursorul explicit?

Așa cum am menționat mai devreme, cursorii expliciți sunt interogări definite folosind un nume. Un cursor explicit poate fi gândit ca un indicator către un set de înregistrări, iar indicatorul poate fi mutat înainte în cadrul setului de înregistrări. Cursorile explicite oferă utilizatorului controlul complet asupra deschiderii, închiderii și preluării datelor. De asemenea, mai multe rânduri pot fi preluate folosind un cursor explicit. Cursorii expliciți pot lua parametri la fel ca orice funcție sau procedură, astfel încât variabilele din cursor să poată fi modificate de fiecare dată când este executat. În plus, cursorele explicite vă permit să preluați un rând întreg într-o variabilă de înregistrare PL / SQL. Când utilizați un cursor explicit, mai întâi trebuie să fie declarat folosind un nume. Atributele cursorului pot fi accesate folosind numele dat cursorului. După declarare, cursorul trebuie deschis mai întâi. Apoi se poate începe preluarea. Dacă trebuie preluate mai multe rânduri, operația de preluare trebuie efectuată în interiorul unei bucle. În cele din urmă, cursorul trebuie închis.

Diferența dintre cursorul explicit și cursorul implicit

Principala diferență între cursorul implicit și cursorul explicit este că un cursor explicit trebuie definit în mod explicit prin furnizarea unui nume, în timp ce cursorii implicați sunt creați automat atunci când emiteți o instrucțiune select. Mai mult, mai multe rânduri pot fi preluate folosind cursoare explicite, în timp ce cursorile implicite pot prelua doar un singur rând. De asemenea, excepțiile NO_DATA_FOUND și TOO_MANY_ROWS nu sunt ridicate atunci când se utilizează cursoare explicite, spre deosebire de cursoare implicite. În esență, cursorile implicite sunt mai vulnerabile la erorile de date și oferă mai puțin control programatic decât cursurile explicite. De asemenea, cursorii implicați sunt considerați mai puțin eficienți decât cursorii expliciți.

Recomandat: