Oracle veritabanında bahsedilen cursor nedir? nasıl kullanılır?
comments
2 references
// Comments are closed.
Oracle veritabanında bahsedilen cursor nedir? nasıl kullanılır?
// Comments are closed.
Basit olarak anlatmak gerekirse; veri tabanındaki kayıltarı gösteren bir pointer olarak geçiyor. Bir sorgu verip o sorgunun sonucunda elimize gelecek olan kayıtların hepsinin pointerlarını bir diziye atıp sonra onun üzerinde tek tek işlem yapabiliyoruz.
İki farklı şekilde tanımlanıyor
1- implicit (üstü kapalı) :
Herhangi bir insert/update/select/delete işlemi çalıştırıldığında otomatik olarak açılıp kapanır.
Burada bir döngü oluşturulup içinde tek tek kayıtlar ile çalışılacak şekilde ayarlanmış. Burada belirli bir şekilde cursor kullanmıyoruz, for döngüsü açıldığı zaman cursor açılıyor, loop-end loop arasında işlemler yapılıyor. Normal veya exit komutu kullanılarak döngüden çıkılırsa cursor kapatılıyor. Ben bu yöntemi tercih ediyorum 🙂 daha kolay.
2- explicit (açık bir şekilde):
Önce çalışılacak veri kümesi için tanımlama yapılmalı
CURSOR cursor_adi IS select * from uyeler;
Daha sonra bu cursor açılmalı
OPEN cursor_adi;
Sonra her bir kayıt cursor içinden çekilip değişkenlere konulmalı
FETCH cursor_adi INTO isim, soyisim, no;
Kayıt kalmadıysa çıkılabilir
EXIT WHEN cursor_adi%NOTFOUND;
İşimiz bittiği zaman kapatmamız lazım
CLOSE cursor_adi;
Bu aşamalara örnek vermek için aşağıdaki koda bakabiliriz.
açık ve kapalı arasında performans farkı olur mu peki?