Perbezaan Antara Kursor Eksplisit dan Kursor Implisit

Anonim

Kursor Eksplisit vs Kursor Implisit

Ketika 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 tersebut. 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 adalah permintaan yang dinamakan dengan menggunakan kursor kata kunci.

Apakah Kursor Implicit?

Kursor tersembunyi 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. Jika 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 tersirat digunakan untuk memproses SELECT INTO statement. Apabila mengambil data menggunakan pengecualian implisit NO_DATA_FOUND pengecualian boleh dibangkitkan apabila penyata SQL tidak mengembalikan data. Selanjutnya, kursor tersirat boleh menaikkan pengecualian TOO_MANY_ROWS apabila penyataan SQL mengembalikan lebih daripada satu baris.

Apakah Kursor Eksplisit?

Seperti yang disebutkan sebelumnya, kursor eksplisit adalah pertanyaan yang ditakrif menggunakan nama. Kursor eksplisit boleh dianggap sebagai penunjuk kepada satu 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 dapat diubah setiap kali ia dilaksanakan. Di samping itu, kursor eksplisit membolehkan 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 tersembunyi dan kursor eksplisit ialah kursor eksplisit perlu didefinisikan dengan jelas dengan memberikan nama manakala kursor tersirat dicipta secara automatik apabila anda mengeluarkan kenyataan pilihan.Selanjutnya, beberapa baris boleh diambil dengan 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 menyediakan kawalan programatik yang kurang daripada kursor yang jelas. Juga, kursor tersirat dianggap kurang cekap daripada kursor eksplisit.