SQL Server da Cursor ile Kayitlar Üzerinde Satir Satir Gezinme

Cursor ile Verileri Satir Satir isleme

Sql Serverda bir sorgu sonucu dönen kayitlar üzerinde satir satir islem yapmak için cursor kullaniriz. Cursor hangi satir üzerinde ise o satirda bulunan veriler ile islem yapariz.  

.

Nasil Kullanilir:

Cursor de kullandigimiz Select cümlesinde dönen her kayit bir degiskene atanmalidir. Bu yüzden bu degeri alacagimiz bir degisken tanimlanir daha sonra cursor tanimlanarak cursor açilir. Select ifadesi sonucunda dönen kayit satir satir islenir. Basit bir cursor örnegi verelim.

declare @ID int

 

declare cursorAdi cursor for

      SELECT ID from  tabloAdi1

OPEN cursorAdi

FETCH NEXT FROM cursorAdi

INTO @ID

WHILE @@FETCH_STATUS = 0

BEGIN

 

  –burada satir satir aldigimiz kayitlarla istedigimiz islemi yapabiliriz. Örn:

  select * from tabloAdi2 where ID = @ID

 

 

  FETCH NEXT FROM cursorAdi INTO @ID

END

CLOSE cursorAdi

DEALLOCATE cursorAdi

 

11 thoughts on “SQL Server da Cursor ile Kayitlar Üzerinde Satir Satir Gezinme

  1. hocam sagolun cok isime yaradi…..simdi baska bi sorgu ile daha sizi rahatsiz edicem:)) bu sefer yine satis tablom var burada distributorkodu,satis temsilcisi kodu fatura numaralari ve bu faturalarin kesilme tarihleri tutuluyor.ben sunu yapicam::  satis temsilcilerinin ayni gun icinde ayni tutarla kestigi faturalarin dokumu.mesela 2 numaralai distributora ait 30 numarali satis temsilcisi 50 tane fatura kesmis bu faturalardan ayni gun icinde ayni tutalra kesilmis olanlarini listelicem sanirim group by kullanicam

  2.  merhaba ayse bu yontemle yapabilirsin ama yapmalimiyim dersen tabiki hayir. cunku senin sorunun cursor kullanmadanda yapilabilir. mecbur kalmadikca cursor kullanmamak gerekir cunku sql icin maliyetli bir islemdir.

    sen ayni tabloyu kendisi ile joinleyerek sorununu cozebilirsin. ornegin ilk olarak her satira temsilci ve tarih sirasina gore 1.2.3.4… sekilde numara ver sonra bu taloyu kendi ile joinle, joini yaparken rownumberlarin bir dusugu ile bir buyugunu (yani 1 ve 2 yada 2 ve 3) joinle. bu sekilde aralarindaki farki bulabilirsin.

    eger anlatamadiysam sen tablondaki kolonlari söyle,vaktim olursa sorgu yazip eklerim buraya.

  3. hocam benimde bi satis tablom war.burda gonderilen satis temsilcisi id sine gore satis temsilcilerinin fatura kestgi tarihler ve fatura numaralari war.ben ard arda fatura kesim tarihlerini donguye sokarak birbirinden cikarmak istyoprum  aradaki zaman farki 3 dk dan fazla ise bunlari listelicek bu yontemlemi yapicam tesekkurlerr

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir