Cursor bir küme içinde bulunan verileri işaret eden ve cursor çeşidine göre verileri,sayısını,verinin olup olmadığını vs. bilgileri bize sunan yapılardır.Yani Cursor birden çok veriyi memory de tutup yorumlayabilmemizi sağlar. Nasıl ki değişkenler tek bir adet veriyi tutuyorsa , cursor ‘lerde bir çok veriyi hatta tabloları tutabilen pl/sql yapılarıdır. PL/SQL ‘de bulunan iki tip cursor yapısı vardır.
- Implicit(Örtülü) Cursor
- Explicit(Açık) Cursor
Implicit(Örtülü) Cursor
Implicit Cursor SQL cümlecikleri çalıştırıldığında Oracle tarafından (eğer explicit cursor yoksa) çalıştırılırlar. Programcı bu yapıya müdahale edemediği için implicit cursor(örtülü gösterge) deniliyor. Programcı bu göstergelere müdahale edemez fakat aşağıdaki tablo da açıklamaya çalıştığım fonksiyonlar ile bazı bilgiler edinebilir. Fonksiyonlardan önce aşağıdaki şekli de sizlere kısaca açıklayayım. PL/SQL bloklarının içerisinde diğer yazılarda gördüğünüz gibi SQL cümlelerini de kullanıyoruz.Oracle normalde PL/SQL Engine ile işe başlar fakat eğer arada SQL sorguları var ise SQL Engine ‘e gidip sorguyu çalıştırıp tekrar PL/SQL Engine’e döner. Aslında implicit cursor’lar işte bu geçişlerdeki verileri tutmaya yarar.
Şimdi bu geçişte tutulan veriler hakkında aşağıdaki fonksiyonlar ile ne kadar bilgi edinebileceğimizi görelim.
Fonksiyon | Açıklama |
%FOUND | Eğer INSERT, UPDATE, ya da DELETE işlemlerinden bir veya daha fazla satır etkilendiyse TRUE döner veya SELECT INTO işleminden bir veya birden fazla satır etkilendiyse TRUE döner. Bunların dışında FALSE döner. |
%NOTFOUND | Mantıksal olarak FOUND işleminin tam tersidir. |
%ISOPEN | Implicit Cursorlar için herzaman FALSE döner çünkü Oracle SQL sorgusu biter bitmez otomatik olarak cursor’ı kapatır.Yani bu fonksiyon cursor kapalı mı değil mi bunu kontrol eder. |
%ROWCOUNT | INSERT,UPDATE,DELETE işlemlerinden etkilenen satur sayısını ve INSERT INTO işleminde insert edilen kayıt sayısını döndürür. |