Explicitný kurzor vs. implicitný kurzor
Pokiaľ ide o databázy, kurzor je riadiaca štruktúra, ktorá umožňuje prechádzať 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 rámci tohto príkazu SQL. Implicitné kurzory sa automaticky vytvárajú a používajú pri každom vydaní príkazu Select v PL / SQL, keď nie je explicitne definovaný kurzor. Explicitné kurzory, ako už názov napovedá, sú výslovne 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 automaticky vytvára a používa spoločnosť Oracle pri každom vydaní príkazu select. Ak sa použije implicitný kurzor, databázový riadiaci systém (DBMS) vykoná operácie otvorenia, načítania a zatvorenia automaticky. 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žitím implicitného kurzora dôjde k chybe. Implicitný kurzor je automaticky spojený s každým príkazom jazyka DML (Data Manipulation Language), konkrétne príkazmi INSERT, UPDATE a DELETE. Implicitný kurzor sa používa aj na spracovanie príkazov SELECT INTO. Pri vyzdvihovaní údajov pomocou implicitných kurzorov sa môže vyskytnúť výnimka NO_DATA_FOUND, keď príkaz SQL nevracia žiadne dáta. Implicitné kurzory môžu zvýšiť TOO_MANY_ROWS výnimky, keď príkaz SQL vráti viac ako jeden riadok.
Čo je výslovný kurzor?
Ako už bolo spomenuté, explicitné kurzory sú dotazy definované pomocou názvu. Výslovný kurzor sa dá považovať za ukazovateľ na skupinu záznamov a ukazovateľ sa môže v rámci súboru záznamov posúvať dopredu. Explicitné kurzory poskytujú užívateľovi úplnú kontrolu nad otváraním, zatváraním a získavaním údajov. Pomocou explicitného kurzora je možné získať aj niekoľko riadkov. Explicitné kurzory môžu tiež nadobúdať parametre rovnako ako ktorákoľvek funkcia alebo postup, takže premenné v kurzore sa môžu meniť pri každom spustení. Explicitné kurzory vám navyše umožňujú načítať celý riadok do premennej záznamu PL / SQL. Pri použití explicitného kurzora musí byť najprv deklarované meno. Atribúty kurzora sú prístupné pomocou názvu priradeného kurzoru. Po deklarovaní je potrebné najprv otvoriť kurzor. Potom je možné spustiť načítanie. Ak je potrebné získať viac riadkov, musí sa operácia načítania vykonať vo vnútri slučky. Nakoniec musí byť kurzor zatvorený.
Rozdiel medzi explicitným kurzorom a implicitným kurzorom
Hlavný rozdiel medzi implicitným kurzorom a explicitným kurzorom spočíva v tom, že explicitný kurzor sa musí explicitne definovať zadaním názvu, zatiaľ čo implicitné kurzory sa automaticky vytvoria pri vydaní príkazu select. Ďalej je možné získať viac riadkov pomocou explicitných kurzorov, zatiaľ čo implicitné kurzory môžu načítať iba jeden riadok. Výnimky NO_DATA_FOUND a TOO_MANY_ROWS sa pri použití explicitných kurzorov nevyvolávajú 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 účinné ako explicitné kurzory.