Oracle veritabanında bahsedilen cursor nedir? nasıl kullanılır? - Hasscript soru&cevap
26 Şubat Veri Tabanı kategorisinde buzel (555 puan) sordu
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.
for r in (select * from uyeler)
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ı
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
Bu aşamalara örnek vermek için aşağıdaki koda bakabiliriz.
CURSOR uyeler is
SELECT no, isim, soyisim FROM uye;
FETCH uyeler into no, isim, soyisim;
EXIT WHEN uyeler%notfound;
dbms_output.put_line(no || ' ' || isim || ' ' || soyisim);
oracle da büyük boyutta data silmeyi nasıl güvenli şekilde cursor yazabilirim?
8 Kasım 2016 Veri Tabanı kategorisinde tolga (1.6k puan) sordu
Oracle veritabanında tüm invalid object'leri nasıl compile ederim?
10 Ocak Veri Tabanı kategorisinde buzel (555 puan) sordu
16 Kasım 2017 Veri Tabanı kategorisinde tolga (1.6k puan) sordu
25 Nisan 2017 Veri Tabanı kategorisinde tolga (1.6k puan) sordu