Rozdiel medzi explicitným a implicitným kurzorom

Rozdiel medzi explicitným a implicitným kurzorom
Rozdiel medzi explicitným a implicitným kurzorom

Video: Rozdiel medzi explicitným a implicitným kurzorom

Video: Rozdiel medzi explicitným a implicitným kurzorom
Video: Кредитные крипто платформы. (USDT, AAVE, COMP) 2024, November
Anonim

Explicitný kurzor vs implicitný kurzor

Pokiaľ ide o databázy, kurzor je riadiaca štruktúra, ktorá umožňuje prechádzať cez záznamy v databáze. Kurzor poskytuje mechanizmus na priradenie názvu príkazu SQL select a potom ho možno použiť na manipuláciu s informáciami v tomto príkaze SQL. Implicitné kurzory sa automaticky vytvoria a použijú vždy, keď je v PL/SQL zadaný príkaz Select, ak neexistuje žiadny explicitne definovaný kurzor. Explicitné kurzory, ako už názov napovedá, sú explicitne definované vývojárom. V PL/SQL je explicitný kurzor v skutočnosti pomenovaný dotaz definovaný pomocou kurzora kľúčového slova.

Čo je implicitný kurzor?

Implicitné kurzory sú automaticky vytvorené a používané spoločnosťou Oracle pri každom vydaní príkazu select. Ak sa použije implicitný kurzor, systém správy databáz (DBMS) automaticky vykoná operácie otvorenia, načítania a zatvorenia. Implicitné kurzory by sa mali používať iba s príkazmi SQL, ktoré vracajú jeden riadok. Ak príkaz SQL vráti viac ako jeden riadok, použitie implicitného kurzora spôsobí chybu. Implicitný kurzor je automaticky priradený ku každému príkazu jazyka DML (Data Manipulation Language), konkrétne príkazom INSERT, UPDATE a DELETE. Na spracovanie príkazov SELECT INTO sa používa aj implicitný kurzor. Pri získavaní údajov pomocou implicitných kurzorov môže byť vyvolaná výnimka NO_DATA_FOUND, keď príkaz SQL nevracia žiadne údaje. Okrem toho môžu implicitné kurzory vyvolať výnimky TOO_MANY_ROWS, keď príkaz SQL vráti viac ako jeden riadok.

Čo je to explicitný kurzor?

Ako už bolo spomenuté, explicitné kurzory sú dopyty definované pomocou názvu. Explicitný kurzor si možno predstaviť ako ukazovateľ na množinu záznamov a ukazovateľ je možné v rámci množiny záznamov posunúť dopredu. Explicitné kurzory poskytujú používateľovi úplnú kontrolu nad otváraním, zatváraním a získavaním údajov. Viac riadkov je tiež možné načítať pomocou explicitného kurzora. Explicitné kurzory môžu tiež nadobudnúť parametre ako každá funkcia alebo procedúra, takže premenné v kurzore možno zmeniť pri každom spustení. Okrem toho vám explicitné kurzory umožňujú načítať celý riadok do premennej záznamu PL/SQL. Keď používate explicitný kurzor, najprv ho treba deklarovať pomocou názvu. K atribútom kurzora je možné pristupovať pomocou názvu daného kurzora. Po deklarácii je potrebné najprv otvoriť kurzor. Potom je možné spustiť načítanie. Ak je potrebné načítať viacero riadkov, operáciu načítania je potrebné vykonať v slučke. Nakoniec je potrebné zavrieť kurzor.

Rozdiel medzi explicitným a implicitným kurzorom

Hlavný rozdiel medzi implicitným kurzorom a explicitným kurzorom je v tom, že explicitný kurzor musí byť definovaný explicitne zadaním názvu, zatiaľ čo implicitné kurzory sa vytvárajú automaticky, keď zadáte príkaz select. Okrem toho je možné získať viacero riadkov pomocou explicitných kurzorov, zatiaľ čo implicitné kurzory môžu získať iba jeden riadok. Pri použití explicitných kurzorov sa nevyvolávajú ani výnimky NO_DATA_FOUND a TOO_MANY_ROWS, na rozdiel od implicitných kurzorov. Implicitné kurzory sú v podstate zraniteľnejšie voči chybám údajov a poskytujú menšiu programovú kontrolu ako explicitné kurzory. Implicitné kurzory sa tiež považujú za menej efektívne ako explicitné kurzory.

Odporúča: