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.

  1. Implicit(Örtülü) Cursor
  2. 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.

PL/SQL CURSOR - PL/SQL Implicit Cursor - PL/SQL Örtülü Cursor

Ş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.

(continue reading…)

15,823 total views, 24 views today