Merhaba arkadaslar;
Bu makalede SQL server da CURSOR kullanimini anlatamaya çalisacagim.Tiri viri yapmadan sadede gelelim.
Kürsörmü ? Ne Kürsörü ?,Kürsör Ne Arar VeriTabaninda ?
CURSOR kayitlar(satirlar) üzerinde gezmenizi saglayan nesnedir.En kaba tabiriyle.
Kullanim alanlari, kullanacaginiz yerler sizlere kalmis.
Basliyoruz !
Denemelerimiz asagidaki tablo üzerinde olacak;

Tablomuzun Yapisi (Data Definition Language(DLL) For TBLKISILER)

Gördügünüz gibi kürsör ilk kayit üzerinde(yani ilk kayit geldi)
Hiç istifimizi bozmadan 3. ve 4. satirlar seçiliyken bir daha çalistiriyoruz sorguyu.Aha ! bir de ne görelim.Bizim kürsör 2. kayda geçmis 

Bu arada @@Fetch_Status diye bir ibare var okunmaDurumu diye adlandirdigim.
@@Fetch_Status Bir Kürsör fonksiyonudur.Ve bu fonsksiyon aktif kürsörün okuma durumunu döndürür.Dikkat edin OkunmaDurumu(yani @@Fetch_Status) Hala 0 olarak dönüyor bize 2. kez çalistirdigimda.Çünkü Tabloda 10 tane kayit var.
11.kez çalistirdigimda asagidaki bir görüntü çikiyor karsima;
|
CREATE TABLE [dbo].[TBLKISILER](
[KIMLIK] [int] IDENTITY(1,1) NOT NULL,
[AD] [varchar](25) NULL,
[SOYAD] [varchar](25) NULL,
CONSTRAINT [PK_TBLKISILER] PRIMARY KEY CLUSTERED
(
[KIMLIK] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
|
Öncelikle en yalin haliye görelim Kürsörümüzü (Dizilisi Kurali)

Yukaridaki satilari çalistirdiginizda TBLKISILER tablosundaki hep ilk kayit listelenecektir.
Sebeb nedir haci abi diye sorarsaniz.Hemen söyleyeyim. TBLKISILER tablosu için bir kürsör tanimlaniyor.Kürsör kaydi okuyor ve kapaniyor.
Halbuki bizim amacimiz ilk kayittan itibaren baslayarak tüm kayitlari gezmek.Onun için söyle bir yol izliyoruz.
Ilk önce 1. ve 2. satiri seçip çalistiriyoruz.Bu islemle TBLKISILER tablosu için benkayitgezerim isminde bir kürsör nesnesi tanimlayip aktif hale getirmis oluyoruz.
Daha sonra sunu yapiyoruz.
3. ve 4. Satirlari seçip Çalistiriyoruz.
OkunmaDurumu -1 ve Kayit Yok.
Burdan söyle bir sonuca variyoruz;
@@Fetch_Status fonksiyonu 0 döndürdügü sürece kürsör kayit okuyabiliyor demek.
Yok -1 döndürüyorsa kayit okuyamiyor demektir
Buraya kadar hersey güzel.
Simdi ise kürsörün aktif oldugu satirin bilgilerine erismeyi görelim.Yani aktif satirdaki degerleri parametrelere aktarmayi…

Simdi ise döngü yardimiyla kürsördeki kayitlari listelemeye görelim
Su sekilde bir mantik yürütücez.
TBLKISILER tablosu için kürsörü tanimlayip aktif hale getirdikten sonra okuma durmunu kontrol edicez while döngüsünde.
While döngüsünde @@Fetch_Status 0 döndügü sürece okuyabiliyor demektir.
Bizde diyecegiz ki okuyabiliyosan oku 

Baska bir listeleme sekli;

Simdi ise söyle bir sey yapalim.Yaptigimiz sey mantiksiz ama ben örnek olmasi açisindan böyle bir sey yapiyorum.
TBLKISILER tablosundaki KIMLIK alani tam ve otomatik sayi tipinde bir kolon.Amacimiz bu kimlik numaralarinin toplamini bulmak olsun.

Temel olarak kullanimi bu sekilde.Kürsör kullanmadan da belki istediginiz seyleri yapabilirsiniz tabikide.Ama kullanimi size kalmis diyorum.
Burada yazmayi bitiyorum.