Cursor explicit vs Cursor implicit
Când vine vorba de baze de date, un cursor este o structură de control care permite parcurgerea înregistrărilor dintr-o bază de date. Un cursor oferă un mecanism pentru a atribui un nume unei instrucțiuni SQL select și apoi poate fi folosit pentru a manipula informațiile din acea instrucțiune SQL. Cursoarele implicite sunt create automat și utilizate de fiecare dată când o instrucțiune Select este emisă în PL/SQL, când nu există niciun cursor definit în mod explicit. Cursoarele explicite, după 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 cuvântul cheie cursor.
Ce este cursorul implicit?
Cursoarele implicite sunt create și utilizate automat de Oracle de fiecare dată când este emisă o declarație select. Dacă se folosește un cursor implicit, sistemul de management al bazei de date (DBMS) va efectua automat operațiunile de deschidere, preluare și închidere. Cursoarele implicite trebuie utilizate numai cu instrucțiuni SQL care returnează un singur rând. Dacă instrucțiunea SQL returnează mai mult de un rând, utilizarea unui cursor implicit va introduce o eroare. Un cursor implicit este asociat automat cu fiecare instrucțiuni DML (Data Manipulation Language), și anume instrucțiunile INSERT, UPDATE și DELETE. De asemenea, un cursor implicit este folosit pentru a procesa instrucțiunile SELECT INTO. La preluarea datelor folosind cursoare implicite, excepția NO_DATA_FOUND poate fi ridicată atunci când instrucțiunea SQL nu returnează date. În plus, cursoarele implicite pot ridica TOO_MANY_ROWS excepții atunci când instrucțiunea SQL returnează mai mult de un rând.
Ce este cursorul explicit?
După cum sa menționat mai devreme, cursoarele explicite sunt interogări definite folosind un nume. Un cursor explicit poate fi considerat ca un indicator către un set de înregistrări, iar indicatorul poate fi mutat înainte în cadrul setului de înregistrări. Cursoarele 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. Cursoarele explicite pot lua, de asemenea, 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, cursoarele 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 preluarea poate fi începută. Dacă trebuie preluate mai multe rânduri, operația de preluare trebuie efectuată în interiorul unei bucle. În cele din urmă, cursorul trebuie să fie închis.
Diferența dintre cursorul explicit și cursorul implicit
Principala diferență dintre cursorul implicit și cursorul explicit este că un cursor explicit trebuie definit explicit prin furnizarea unui nume, în timp ce cursoarele implicite sunt create automat atunci când emiteți o instrucțiune select. În plus, mai multe rânduri pot fi preluate folosind cursoare explicite, în timp ce cursoarele 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 cursoarele implicite. În esență, cursoarele implicite sunt mai vulnerabile la erorile de date și oferă mai puțin control programatic decât cursoarele explicite. De asemenea, cursoarele implicite sunt considerate mai puțin eficiente decât cursoarele explicite.