Explicit Cursor vs Implicit Cursor
Pagdating sa mga database, ang cursor ay isang control structure na nagbibigay-daan sa pagtawid sa mga record sa isang database. Ang isang cursor ay nagbibigay ng isang mekanismo upang magtalaga ng isang pangalan sa isang SQL select statement at pagkatapos ay maaari itong gamitin upang manipulahin ang impormasyon sa loob ng SQL statement na iyon. Awtomatikong ginagawa at ginagamit ang mga implicit na cursor sa tuwing may ilalabas na Select statement sa PL/SQL, kapag walang malinaw na tinukoy na cursor. Ang mga tahasang cursor, gaya ng ipinahihiwatig ng pangalan, ay tahasang tinukoy ng developer. Sa PL/SQL ang isang tahasang cursor ay talagang isang pinangalanang query na tinukoy gamit ang key word cursor.
Ano ang Implicit Cursor?
Ang mga implicit na cursor ay awtomatikong ginagawa at ginagamit ng Oracle sa tuwing may ibibigay na piling pahayag. Kung ang isang implicit na cursor ay ginamit, ang Database Management System (DBMS) ay awtomatikong gagawa ng open, fetch at close operations. Ang mga implicit na cursor ay dapat gamitin lamang sa mga SQL statement na nagbabalik ng isang row. Kung ang SQL statement ay nagbabalik ng higit sa isang row, ang paggamit ng isang implicit na cursor ay magsisimula ng isang error. Awtomatikong nauugnay ang isang implicit na cursor sa bawat pahayag ng Data Manipulation Language (DML), katulad ng INSERT, UPDATE at DELETE na mga pahayag. Gayundin, ang isang implicit na cursor ay ginagamit upang iproseso ang SELECT INTO na mga pahayag. Kapag kumukuha ng data gamit ang implicit cursors NO_DATA_FOUND exception ay maaaring itaas kapag ang SQL statement ay walang ibinalik na data. Higit pa rito, maaaring itaas ng mga implicit na cursor ang TOO_MANY_ROWS exception kapag nagbalik ang SQL statement ng higit sa isang row.
Ano ang Explicit Cursor?
Tulad ng nabanggit kanina, ang mga tahasang cursor ay mga query na tinukoy gamit ang isang pangalan. Ang isang tahasang cursor ay maaaring isipin bilang isang pointer sa isang hanay ng mga talaan at ang pointer ay maaaring ilipat pasulong sa loob ng hanay ng mga talaan. Ang mga tahasang cursor ay nagbibigay sa user ng kumpletong kontrol sa pagbubukas, pagsasara at pagkuha ng data. Gayundin, maaaring makuha ang maraming row gamit ang isang tahasang cursor. Ang mga tahasang cursor ay maaari ding kumuha ng mga parameter tulad ng anumang function o procedure upang ang mga variable sa cursor ay maaaring mabago sa tuwing ito ay isasagawa. Bilang karagdagan, binibigyang-daan ka ng mga tahasang cursor na kumuha ng buong row sa isang variable ng PL/SQL record. Kapag gumagamit ng isang tahasang cursor, kailangan muna itong ideklara gamit ang isang pangalan. Maaaring ma-access ang mga katangian ng cursor gamit ang pangalang ibinigay sa cursor. Pagkatapos magdeklara, kailangang buksan muna ang cursor. Pagkatapos ay maaaring simulan ang pagkuha. Kung maraming row ang kailangang kunin, kailangang gawin ang operasyon sa pagkuha sa loob ng loop. Sa wakas, kailangang isara ang cursor.
Pagkakaiba sa pagitan ng Explicit Cursor at Implicit Cursor
Ang pangunahing pagkakaiba sa pagitan ng implicit cursor at tahasang cursor ay ang isang tahasang cursor ay kailangang tahasang tukuyin sa pamamagitan ng pagbibigay ng pangalan habang ang mga implicit na cursor ay awtomatikong nagagawa kapag naglabas ka ng isang piling pahayag. Higit pa rito, maraming row ang maaaring makuha gamit ang tahasang mga cursor habang ang mga implicit na cursor ay maaari lamang kumuha ng isang row. Hindi rin itinataas ang NO_DATA_FOUND at TOO_MANY_ROWS exception kapag gumagamit ng mga tahasang cursor, kumpara sa mga implicit na cursor. Sa esensya, ang mga implicit na cursor ay mas mahina sa mga error sa data at nagbibigay ng mas kaunting programmatic na kontrol kaysa sa mga tahasang cursor. Gayundin, ang mga implicit na cursor ay itinuturing na hindi gaanong mahusay kaysa sa mga tahasang cursor.