Explicit kurzor vs implicit kurzor
Amikor adatbázisokról van szó, a kurzor egy vezérlőstruktúra, amely lehetővé teszi az adatbázisban lévő rekordok áthaladását. A kurzor egy olyan mechanizmust biztosít, amellyel nevet rendelhet egy SQL-kiválasztási utasításhoz, majd az SQL utasításon belüli információk manipulálására használható. Az implicit kurzorok automatikusan létrejönnek és használatosak minden alkalommal, amikor Select utasítást adnak ki PL/SQL-ben, ha nincs kifejezetten definiált kurzor. Az explicit kurzorokat, ahogy a neve is sugallja, a fejlesztő kifejezetten határozza meg. A PL/SQL-ben az explicit kurzor tulajdonképpen egy elnevezett lekérdezés, amelyet a kulcsszó kurzorral határozunk meg.
Mi az implicit kurzor?
Az Oracle automatikusan létrehozza és használja az implicit kurzorokat, valahányszor kiválasztási utasítást adnak ki. Ha implicit kurzort használ, az adatbázis-kezelő rendszer (DBMS) automatikusan végrehajtja a nyitási, lekérési és bezárási műveleteket. Az implicit kurzorokat csak olyan SQL utasításokkal szabad használni, amelyek egyetlen sort adnak vissza. Ha az SQL utasítás egynél több sort ad vissza, az implicit kurzor használata hibát okoz. Egy implicit kurzor automatikusan társítva van minden DML (Data Manipulation Language) utasításhoz, nevezetesen az INSERT, UPDATE és DELETE utasításokhoz. Ezenkívül egy implicit kurzort használnak a SELECT INTO utasítások feldolgozásához. Amikor az adatok implicit kurzorok használatával kérnek le, NO_DATA_FOUND kivétel léphet fel, ha az SQL utasítás nem ad vissza adatokat. Ezenkívül az implicit kurzorok TOO_MANY_ROWS kivételt hozhatnak létre, ha az SQL utasítás egynél több sort ad vissza.
Mi az explicit kurzor?
Amint korábban említettük, az explicit kurzorok egy név segítségével meghatározott lekérdezések. Az explicit kurzor felfogható egy rekordhalmazra mutató mutatónak, és a mutató előre mozgatható a rekordkészleten belül. Az explicit kurzorok teljes körű vezérlést biztosítanak a felhasználó számára az adatok megnyitása, bezárása és lekérése felett. Ezenkívül több sor is lehívható explicit kurzorral. Az explicit kurzorok is felvehetnek paramétereket, ugyanúgy, mint bármely függvény vagy eljárás, így a kurzor változói minden egyes végrehajtáskor megváltoztathatók. Ezenkívül az explicit kurzorok lehetővé teszik, hogy egy teljes sort lekérjen egy PL/SQL rekordváltozóba. Explicit kurzor használatakor először névvel kell deklarálni. A kurzor attribútumai a kurzornak adott név használatával érhetők el. A deklaráció után először a kurzort kell megnyitni. Ezután indulhat a letöltés. Ha több sort kell lekérni, akkor a lekérési műveletet egy cikluson belül kell végrehajtani. Végül a kurzort be kell zárni.
Különbség az explicit kurzor és az implicit kurzor között
A fő különbség az implicit kurzor és az explicit kurzor között az, hogy az explicit kurzort explicit módon meg kell határozni egy név megadásával, míg az implicit kurzorok automatikusan létrejönnek, amikor kiad egy select utasítást. Ezenkívül több sor is lehívható explicit kurzorokkal, míg az implicit kurzorok csak egy sort tudnak lekérni. A NO_DATA_FOUND és a TOO_MANY_ROWS kivétel sem jelenik meg explicit kurzorok használatakor, szemben az implicit kurzorokkal. Lényegében az implicit kurzorok sebezhetőbbek az adathibákkal szemben, és kevésbé programozott vezérlést biztosítanak, mint az explicit kurzorok. Ezenkívül az implicit kurzorok kevésbé hatékonyak, mint az explicit kurzorok.