Diferența dintre Cursorul explicit și Cursorul implicit

Cursor explicit vs. Cursor implicit

Când vine vorba de baze de date, un cursor este o structură de control care permite trecerea peste înregistrările într-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, atunci când nu există un cursor explicit definit. Cursanții expliciți, așa cum sugerează și numele, sunt definiți în mod explicit de către dezvoltator. În PL / SQL un cursor explicit este de fapt o interogare denumită definită cu ajutorul cursorului de cuvânt cheie.

Ce este Implicit Cursor?

Cursorii impliciți sunt creați și utilizați automat de Oracle de fiecare dată când se emite o instrucțiune selectată. Dacă se utilizează un cursor implicit, sistemul de gestionare a bazelor de date (DBMS) va efectua automat operațiile deschise, preluate și închise. Cursorii impliciți ar trebui să fie utilizați numai cu instrucțiuni SQL care returnează un singur rând. Dacă instruciunea SQL returnează mai mult de un rând, utilizând un cursor implicit va introduce o eroare. Un cursor implicit este asociat automat fiecărei instrucțiuni de limbă de manipulare a datelor (DML), respectiv instrucțiuni INSERT, UPDATE și DELETE. De asemenea, un cursor implicit este utilizat pentru procesarea instrucțiunilor SELECT INTO. Când se prelucrează date utilizând cursoarele implicite, excepția NO_DATA_FOUND poate fi ridicată atunci când instrucțiunea SQL nu returnează date. În plus, cursorul implicit poate să genereze excepții TOO_MANY_ROWS atunci când instruciunea SQL returnează mai mult de un rând.

Ce este Cursorul explicit?

După cum am menționat mai devreme, cursoarele explicite sunt interogări definite cu ajutorul unui nume. Un cursor explicit poate fi considerat ca un pointer la un set de înregistrări și pointerul poate fi mutat înainte în setul de înregistrări. Cursorii explicit oferă utilizatorului controlul complet asupra deschiderii, închiderii și preluării datelor. De asemenea, mai multe rânduri pot fi extrase utilizând un cursor explicit. Cursorii expliciți pot lua parametri ca orice funcție sau procedură, astfel încât variabilele din cursor să poată fi modificate de fiecare dată când sunt executate. În plus, cursoarele explicite vă permit să preluați un rând întreg la o variabilă de înregistrare PL / SQL. Când folosiț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 să fie deschis mai întâi. Apoi poate fi începută preluarea. Dacă trebuie să fie preluate mai multe rânduri, operația de preluare trebuie făcută în interiorul unei buclă. În cele din urmă, cursorul trebuie închis.

Diferența dintre Cursorul explicit și Cursorul implicit

Principala diferență dintre cursorul implicit și cursorul explicit este că un cursor explicit trebuie să fie definit în mod explicit prin furnizarea unui nume, în timp ce cursorii impliciți sunt creați automat când emiteți o instrucțiune selectată. În plus, mai multe rânduri pot fi extrase utilizând cursoare explicite, în timp ce cursorii impliciți 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ă un control mai puțin programatic decât cursoarele explicite. De asemenea, cursoarele implicite sunt considerate mai puțin eficiente decât cursoarele explicite.