Sql serverda Cursor (İmleç ) Kullanımı

by Yasin Kızılbakır 12. Eylül 2011 18:22

Merhaba arkadaşlar bu makalemde sizlere Sql server’da Cursor kullanımı hakkında bilgi vereceğim. Cursor parametresi ile sql server içerisindeki kayıtlara tek tek ulaşabiliriz. Fakat büyük projelerde  performans açısından  çok yavaştır .Fakat işlerimizi yaparken başka bir alternatifimiz olmadığı durumlarda bu performansı göz önünde bulundurmuyoruz. 

Şimdi Örneğimizde  Customer Tablosu oluşturuyorum  tablomuzun ekran görüntüsü aşağıda gösterilmiştir. Örneğimizde Cursor’e ihtiyacımız olmayabilir fakat sizlere anlatmak amaçlı bu örnekte inceliyoruz. 

 

--Şimdi Örneğimizde ihtiyaç duyacağimiz değişkenleri oluşturuyoruz. 

Declare  @name nvarchar(50), @surname nvarchar(50),@id nvarchar(50) 

--Cursor oluşturma işlemine geçelim.Cursor'muzun adını csr_sirala koyuyoruz. 

Declare csr_sirala Cursor For 

Select ID,Name,Surname from Customer order by Name 

--Cursor Oluşturduk oluşturduğumuz cursor'ü açıyoruz. 

Open csr_sirala 

--Cursorde tablomuz barınıyor.Kayıtlar içerisinde ilerlemek için   

Fetch Next -- diyerek ilerliyorur. 

Fetch First -- ile satır başına dönüyoruz. 

Fetch Last -- satır sonuna ilerliyoruz. 

Fetch Next from csr_sirala Into @id,@name,@surname  

--Bu işlemde bütün kayıtları dolaşabilmemiz için bir while dongusu tanımlıyoruz. FETCH komutunun durumunu ”@@FETCH_STATUS” tutar.FETCH_STATUS,” 0”  olduğunda başarılı"-1” olduğunda başarısız “-2” olduğunda ise kayıt bulunamadığı anlamına gelir. 

while @@FETCH_STATUS=0 

Begin 

Update Customer set NameSurname=@name+' '+@surname where ID=@id

fetch Next from csr_sirala Into @id,@name,@surname 

End 

--Execute ediyoruz sonuç olarak tablomuz aşagıda gösterilmiştir. 

Bu makalemizinde sonuna geldik bir dahaki makalede görüşmek üzere.

Tags: , , ,

SQL

Yorum ekle

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading

Yasin Kızılbakır

Takip Et
İletişim

Arşiv

Takvim

<<  Mayıs 2012  >>
PaSaÇaPeCuCuPa
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar

FaceBook Sayfam