Perbezaan Antara Kursor Eksplisit dan Kursor Tersirat

Perbezaan Antara Kursor Eksplisit dan Kursor Tersirat
Perbezaan Antara Kursor Eksplisit dan Kursor Tersirat

Video: Perbezaan Antara Kursor Eksplisit dan Kursor Tersirat

Video: Perbezaan Antara Kursor Eksplisit dan Kursor Tersirat
Video: Часто задаваемые вопросы о джейлбрейке 2024, November
Anonim

Kursor Eksplisit lwn Kursor Tersirat

Mengenai pangkalan data, kursor ialah struktur kawalan yang membolehkan merentasi rekod dalam pangkalan data. Kursor menyediakan mekanisme untuk memberikan nama kepada pernyataan pilih SQL dan kemudian ia boleh digunakan untuk memanipulasi maklumat dalam pernyataan SQL tersebut. Kursor tersirat dicipta dan digunakan secara automatik setiap kali pernyataan Pilih dikeluarkan dalam PL/SQL, apabila tiada kursor yang ditakrifkan secara eksplisit. Kursor eksplisit, seperti namanya, ditakrifkan secara eksplisit oleh pembangun. Dalam PL/SQL kursor eksplisit sebenarnya adalah pertanyaan bernama yang ditakrifkan menggunakan kursor kata kunci.

Apakah itu Kursor Tersirat?

Kusor tersirat dicipta secara automatik dan digunakan oleh Oracle setiap kali pernyataan pilihan dikeluarkan. Jika kursor tersirat digunakan, Sistem Pengurusan Pangkalan Data (DBMS) akan melaksanakan operasi buka, ambil dan tutup secara automatik. Kursor tersirat hendaklah digunakan hanya dengan pernyataan SQL yang mengembalikan satu baris. Jika pernyataan SQL mengembalikan lebih daripada satu baris, menggunakan kursor tersirat akan memperkenalkan ralat. Kursor tersirat dikaitkan secara automatik dengan setiap pernyataan Bahasa Manipulasi Data (DML), iaitu INSERT, UPDATE dan DELETE pernyataan. Juga, kursor tersirat digunakan untuk memproses penyataan SELECT INTO. Apabila mengambil data menggunakan kursor tersirat NO_DATA_FOUND pengecualian boleh dinaikkan apabila pernyataan SQL tidak mengembalikan data. Selain itu, kursor tersirat boleh meningkatkan TOO_MANY_ROWS pengecualian apabila pernyataan SQL mengembalikan lebih daripada satu baris.

Apakah itu Kursor Eksplisit?

Seperti yang dinyatakan sebelum ini, kursor eksplisit ialah pertanyaan yang ditakrifkan menggunakan nama. Kursor eksplisit boleh dianggap sebagai penunjuk kepada set rekod dan penunjuk boleh dialihkan ke hadapan dalam set rekod. Kursor eksplisit memberikan pengguna kawalan penuh ke atas membuka, menutup dan mengambil data. Selain itu, berbilang baris boleh diambil menggunakan kursor eksplisit. Kursor eksplisit juga boleh mengambil parameter seperti mana-mana fungsi atau prosedur supaya pembolehubah dalam kursor boleh ditukar setiap kali ia dilaksanakan. Selain itu, kursor eksplisit membolehkan anda mengambil keseluruhan baris ke 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 Tersirat

Perbezaan utama antara kursor tersirat dan kursor eksplisit ialah kursor eksplisit perlu ditakrifkan secara eksplisit dengan memberikan nama manakala kursor tersirat dicipta secara automatik apabila anda mengeluarkan pernyataan pilihan. Selain itu, berbilang baris boleh diambil menggunakan kursor eksplisit manakala kursor tersirat hanya boleh mengambil satu baris. Pengecualian NO_DATA_FOUND dan TOO_MANY_ROWS juga tidak dinaikkan apabila menggunakan kursor eksplisit, berbanding kursor tersirat. Pada dasarnya, kursor tersirat lebih terdedah kepada ralat data dan memberikan kawalan terprogram yang kurang daripada kursor eksplisit. Selain itu, kursor tersirat dianggap kurang cekap berbanding kursor eksplisit.

Disyorkan: