Açıq Kursor vs Gizli Kursor
Söhbət verilənlər bazasına gəldikdə, kursor verilənlər bazasındakı qeydlər üzərindən keçməyə imkan verən idarəetmə strukturudur. Kursor SQL seçim ifadəsinə ad təyin etmək mexanizmini təmin edir və sonra həmin SQL ifadəsi daxilində məlumatı idarə etmək üçün istifadə edilə bilər. Açıq şəkildə müəyyən edilmiş kursor olmadıqda, PL/SQL-də hər dəfə Select bəyanatı verildikdə örtük kursorlar avtomatik olaraq yaradılır və istifadə olunur. Açıq kursorlar, adından da göründüyü kimi, tərtibatçı tərəfindən açıq şəkildə müəyyən edilir. PL/SQL-də açıq kursor əslində kursor açar sözündən istifadə etməklə müəyyən edilmiş adlandırılmış sorğudur.
İmplicit Kursor nədir?
İmplicit kursorlar hər dəfə seçilmiş bəyanat verildikdə Oracle tərəfindən avtomatik olaraq yaradılır və istifadə olunur. Gizli kursor istifadə edilərsə, Verilənlər Bazasının İdarə Edilməsi Sistemi (DBMS) avtomatik olaraq açma, götürmə və bağlama əməliyyatlarını yerinə yetirəcəkdir. Gizli kursorlar yalnız bir sıra qaytaran SQL ifadələri ilə istifadə edilməlidir. SQL ifadəsi birdən çox cərgə qaytarırsa, gizli kursordan istifadə xətaya səbəb olacaq. Gizli kursor avtomatik olaraq hər bir Data Manipulation Language (DML) ifadələri ilə, yəni INSERT, UPDATE və DELETE ifadələri ilə əlaqələndirilir. Həmçinin, SELECT INTO ifadələrini emal etmək üçün gizli kursordan istifadə olunur. Gizli kursorlardan istifadə edərək məlumatları əldə edərkən SQL ifadəsi heç bir məlumatı qaytarmadıqda NO_DATA_FOUND istisnası qaldırıla bilər. Bundan əlavə, SQL ifadəsi birdən çox sətir qaytardıqda gizli kursorlar TOO_MANY_ROWS istisnaları qaldıra bilər.
Açıq Kursor nədir?
Əvvəlcə qeyd edildiyi kimi, açıq kursorlar addan istifadə etməklə müəyyən edilmiş sorğulardır. Açıq kursor qeydlər dəstinin göstəricisi kimi düşünülə bilər və göstərici qeydlər dəsti daxilində irəli çəkilə bilər. Açıq kursorlar istifadəçiyə məlumatların açılması, bağlanması və götürülməsi üzərində tam nəzarəti təmin edir. Həmçinin, açıq kursordan istifadə edərək çoxlu sətirlər götürülə bilər. Açıq kursorlar da hər hansı funksiya və ya prosedur kimi parametrləri götürə bilər ki, kursordakı dəyişənlər hər yerinə yetirildikdə dəyişdirilə bilsin. Bundan əlavə, açıq kursorlar sizə PL/SQL qeyd dəyişəninə bütöv bir sıra gətirməyə imkan verir. Açıq kursordan istifadə edərkən əvvəlcə onu adla elan etmək lazımdır. Kursorun atributlarına kursora verilən addan istifadə etməklə daxil olmaq olar. Elan etdikdən sonra əvvəlcə kursoru açmaq lazımdır. Sonra gətirmə başlaya bilər. Birdən çox cərgənin götürülməsi lazımdırsa, gətirmə əməliyyatı bir döngə daxilində aparılmalıdır. Nəhayət, kursor bağlanmalıdır.
Açıq Kursor və Gizli Kursor Arasındakı Fərq
Düzgün kursorla açıq kursor arasındakı əsas fərq ondan ibarətdir ki, siz seçmə bəyanatı verərkən gizli kursorlar avtomatik yaradılarkən, açıq kursor ad təqdim etməklə açıq şəkildə müəyyən edilməlidir. Bundan əlavə, açıq kursorlardan istifadə etməklə çoxlu sətirlər götürülə bilər, gizli kursorlar isə yalnız bir sıra gətirə bilər. Həmçinin NO_DATA_FOUND və TOO_MANY_ROWS istisnalar açıq kursorlardan fərqli olaraq açıq kursorlardan istifadə edərkən qaldırılmır. Əslində, gizli kursorlar məlumat xətalarına daha həssasdır və açıq kursorlarla müqayisədə daha az proqram nəzarəti təmin edir. Həmçinin, gizli kursorlar açıq kursorlardan daha az effektiv hesab olunur.