Pages

SqlServer de Cursor olayı

Cursor  database den aldığımız verinin içinde gezinmemizi sağlar. bunu Database den Datareader ile dataları aldığımızda da yapabiliriz. fakat bu kullanıcı makinasında (client) yapılacağı için veri eğer büyükse performansı düşürür. bu işlemi server de yapıp client a sadece istenileni göndermek ise performans olarak daha iyi olur.

DECLARE Kisi_tablosu CURSOR FOR
SELECT Ad,soyad FROM tblKimlik;
OPEN Kisi_tablosu;
FETCH NEXT FROM Kisi_tablosu;
WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM Kisi_tablosu;
   END;
CLOSE Kisi_tablosu;
DEALLOCATE Kisi_tablosu;

burada yine önce  Declare Kisi_tablosu Cursor For Select Ad,Soyad from tblKimlik; satırları ile önce cursorumuzu tanımlıyor sonrada hangi sql işlemi üzerine çalışacağını gösteriyoruz. tblKimlik tablosunda Ad,soyad değişkenlerini alıyoruz.

cursoru açıyoruz Open Kis_tablosu; ile.

FETCH NEXT FROM Open Kis_tablosu; ile ilerlemeyönünü gösteriyoruz.

WHILE @@FETCH_STATUS = 0
   BEGIN
      FETCH NEXT FROM Kisi_tablosu;
   END;

data basede kayıdımız olduğu sürece kayıtları tek tek alıyoruz.

CLOSE Kisi_tablosu;
DEALLOCATE Kisi_tablosu;

Cursoru kapatıyoruz ve rem de boşuna yer kaplamasın diye DEALLOCATE ile remden kaldırıyoruz. burda DEALLOCATE olayı önemli. Çünkü Eğer unutursak bunu belirli bir sayı sonra server remi dolacak ve isteğimize yanıt veremeyecektir. performan için gerekli.

Hiç yorum yok: