Kursor Eksplisit vs Kursor Implisit
Apabila ia datang ke pangkalan data, kursor adalah struktur kawalan yang membolehkan melintasi rekod dalam pangkalan data. Kursor menyediakan mekanisme untuk memberikan nama kepada pernyataan pilih SQL dan kemudiannya dapat digunakan untuk memanipulasi maklumat dalam pernyataan SQL itu. Kursor tersirat secara automatik dicipta dan digunakan setiap kali pernyataan Pilih dikeluarkan dalam PL / SQL, apabila tidak ada kursor yang ditentukan secara jelas. Kursor eksplisit, seperti nama yang dicadangkan, ditakrifkan secara jelas oleh pemaju. Dalam PL / SQL, kursor eksplisit sebenarnya merupakan permintaan yang dinamakan dengan menggunakan kursor kata kunci.
Apakah Kursor Implicit??
Kursor tersirat secara automatik dicipta dan digunakan oleh Oracle setiap kali pernyataan pilih dikeluarkan. Jika kursor tersirat digunakan, Sistem Pengurusan Pangkalan Data (DBMS) akan melaksanakan operasi terbuka, mengambil dan menutup secara automatik. Kursor tersirat harus digunakan hanya dengan pernyataan SQL yang mengembalikan satu baris. Sekiranya penyataan SQL mengembalikan lebih daripada satu baris, menggunakan kursor tersirat akan memperkenalkan ralat. Kursor tersirat secara automatik dikaitkan dengan setiap pernyataan Bahasa Manipulasi Data (DML), iaitu kenyataan INSERT, UPDATE dan DELETE. Juga, kursor implisit digunakan untuk memproses SELECT INTO statement. Apabila mengambil data menggunakan pengecualian tersembunyi NO_DATA_FOUND pengecualian boleh dibangkitkan apabila penyata SQL tidak mengembalikan data. Selain itu, kursor tersirat boleh meningkatkan pengecualian TOO_MANY_ROWS apabila penyataan SQL mengembalikan lebih daripada satu baris.
Apakah Kursor Eksplisit??
Seperti yang disebutkan sebelumnya, kursor eksplisit adalah pertanyaan yang ditakrifkan menggunakan nama. Kursor eksplisit boleh dianggap sebagai penunjuk kepada set rekod dan penunjuk boleh dipindahkan ke hadapan dalam set rekod. Kursor eksplisit memberikan pengguna kawalan lengkap untuk membuka, menutup dan mengambil data. Juga, beberapa baris boleh diambil dengan menggunakan kursor eksplisit. Kursor eksplisit juga boleh mengambil parameter seperti mana-mana fungsi atau prosedur supaya pemboleh ubah dalam kursor boleh diubah setiap kali ia dilaksanakan. Di samping itu, kursor eksplisit membenarkan anda mengambil keseluruhan baris ke dalam pembolehubah rekod PL / SQL. Apabila menggunakan kursor eksplisit, mula-mula ia perlu diisytiharkan menggunakan nama. Atribut kursor boleh diakses menggunakan nama yang diberikan kepada kursor. Selepas mengisytiharkan, kursor perlu dibuka terlebih dahulu. Kemudian pengambilan boleh dimulakan. Jika berbilang baris perlu diambil, operasi pengambilan perlu dilakukan di dalam gelung. Akhirnya, kursor perlu ditutup.
Perbezaan Antara Kursor Eksplisit dan Kursor Implisit
Perbezaan utama antara kursor tersirat dan kursor eksplisit ialah kursor eksplisit perlu ditakrifkan secara jelas dengan memberikan nama sementara kursor tersirat dicipta secara automatik apabila anda mengeluarkan kenyataan pilih. Selain itu, beberapa baris boleh diambil menggunakan kursor eksplisit sementara kursor tersirat hanya boleh mengambil satu baris. Juga pengecualian NO_DATA_FOUND dan TOO_MANY_ROWS tidak dibangkitkan apabila menggunakan kursor eksplisit, berbanding dengan kursor tersirat. Pada dasarnya, kursor tersirat lebih terdedah kepada kesilapan data dan memberikan kawalan programatik yang kurang daripada kursor yang jelas. Juga, kursor tersirat dianggap kurang cekap daripada kursor eksplisit.