Ochiq kursor va yashirin kursor
Ma'lumotlar bazalari haqida gap ketganda, kursor ma'lumotlar bazasidagi yozuvlar bo'ylab harakatlanish imkonini beruvchi boshqaruv strukturasidir. Kursor SQL-ni tanlash bayonotiga nom berish mexanizmini taqdim etadi va undan keyin ushbu SQL bayonotidagi ma'lumotlarni manipulyatsiya qilish uchun foydalanish mumkin. Yashirin kursorlar PL/SQL-da har safar Select iborasi chiqarilganda, aniq belgilangan kursor bo'lmasa, avtomatik ravishda yaratiladi va foydalaniladi. Nomidan ko'rinib turibdiki, aniq kursorlar ishlab chiquvchi tomonidan aniq belgilanadi. PL/SQL da aniq kursor aslida kursor kalit so'zi yordamida aniqlangan nomli so'rovdir.
Bevosita kursor nima?
Implicit kursorlar har safar tanlangan bayonot chiqarilganda Oracle tomonidan avtomatik ravishda yaratiladi va foydalaniladi. Agar yashirin kursor ishlatilsa, ma'lumotlar bazasini boshqarish tizimi (DBMS) avtomatik ravishda ochish, olish va yopish operatsiyalarini bajaradi. Yashirin kursorlar faqat bitta qatorni qaytaradigan SQL iboralari bilan ishlatilishi kerak. Agar SQL bayonoti bir nechta qatorni qaytarsa, yashirin kursordan foydalanish xatolikka olib keladi. Yashirin kursor har bir Ma'lumotni boshqarish tili (DML) bayonotlari, ya'ni INSERT, UPDATE va DELETE iboralari bilan avtomatik ravishda bog'lanadi. Shuningdek, SELECT INTO bayonotlarini qayta ishlash uchun yashirin kursor ishlatiladi. Yashirin kursorlar yordamida ma'lumotlarni olishda SQL bayonoti hech qanday ma'lumotni qaytarmasa, NO_DATA_FOUND istisnosi paydo bo'lishi mumkin. Bundan tashqari, SQL iborasi bir nechta qatorni qaytarsa, yashirin kursorlar TOO_MANY_ROWS istisnolarni ko'tarishi mumkin.
Ochiq kursor nima?
Avval aytib oʻtganimizdek, aniq kursorlar nom yordamida aniqlangan soʻrovlardir. Aniq kursorni yozuvlar to'plamiga ko'rsatgich sifatida qarash mumkin va ko'rsatgichni yozuvlar to'plami ichida oldinga siljitish mumkin. Aniq kursorlar foydalanuvchiga ma'lumotlarni ochish, yopish va olish ustidan to'liq nazoratni ta'minlaydi. Bundan tashqari, aniq kursor yordamida bir nechta qatorlarni olish mumkin. Aniq kursorlar har qanday funktsiya yoki protsedura kabi parametrlarni ham olishi mumkin, shuning uchun kursordagi o'zgaruvchilar har bir bajarilganda o'zgartirilishi mumkin. Bundan tashqari, aniq kursorlar PL/SQL yozuvi oʻzgaruvchisiga butun qatorni olish imkonini beradi. Aniq kursordan foydalanganda, avval uni nom yordamida e'lon qilish kerak. Kursor atributlariga kursorga berilgan nom yordamida kirish mumkin. E'lon qilingandan so'ng, avval kursor ochilishi kerak. Keyin olish boshlanishi mumkin. Agar bir nechta satrlarni olish kerak bo'lsa, olish jarayoni tsikl ichida bajarilishi kerak. Nihoyat, kursor yopilishi kerak.
Ochiq kursor va yashirin kursor oʻrtasidagi farq
Yashirin kursor va aniq kursor oʻrtasidagi asosiy farq shundan iboratki, aniq kursor nomini koʻrsatish orqali aniq belgilanishi kerak, shu bilan birga tanlangan bayonotni chiqarishda yashirin kursorlar avtomatik ravishda yaratiladi. Bundan tashqari, aniq kursorlar yordamida bir nechta satrlarni olish mumkin, yashirin kursorlar esa faqat bitta qatorni olishlari mumkin. Shuningdek, NO_DATA_FOUND va TOO_MANY_ROWS istisnolar aniq kursorlardan foydalanilganda ko'tarilmaydi. Aslini olganda, yashirin kursorlar ma'lumotlar xatolariga nisbatan zaifroq va aniq kursorlarga qaraganda kamroq dasturiy boshqaruvni ta'minlaydi. Bundan tashqari, yashirin kursorlar aniq kursorlarga qaraganda kamroq samarali hisoblanadi.