SQL CURSOR KULLANIMI

Merhabalar arkadaşla bu yazımda mssql serverda cursor kullanımını olabildiğince basit bir örnekle anlatmaya çalışacağım , umarım faydalı olur 🙂

[raw] [/raw]

Cursor’lar bir veri grubu (tablo) üzerinde satır satır işlem yapabilmeyi sağlar . birnevi for döngüsü gibi çalışır , belirtilen select sorgusundan gelen verileri satır satır döndürür ve cursor içinde tanımlanan işlemi yapar . satır satır işlem yapıldığı için yapılan işlemlerde yavaşlığa neden olabilir bu nedenle nerede ve ne zaman kullanılacağına dikkat edilmelidir.

 

Örnek bir cursor tanımlayalım :

Yapacağımız işlemler :

  1. Cursor için kullanacağımız paramatreleri ve data tiplerini tanımlayacağız (@AD_SOYAD_C, @OGRENCI_NO_C v.s.)
  2. Cursorde işlem yapacağımız verileri select sorgusu ile getiriyoruz ve cursur a giriş yapılacak sütunlar belirtiliyor.
  3. Cursor açılır ve yapılıcak işlemler tanımlanır.
  4. Cursor kapatılır ve DEALLOCATE ile sistemeden temizlernir.

[raw] [/raw]

--SQL CURSOR KULLANIMI


DECLARE @AD_SOYAD_C NVARCHAR(MAX), @OGRENCI_NO_C NVARCHAR(MAX) -- Cursor de kullanacağımız parametreleri tanımlıyoruz.

	DECLARE CRS_OGRENCI CURSOR FOR
	
	SELECT AdiSoyadi , OgrenciNo FROM Ogrenciler -- Cursur de işlenecek veriler ve listeyi select sorgusu ile çekiyoruz .

	OPEN CRS_OGRENCI -- Cursor ü açıyoruz

	FETCH NEXT FROM CRS_OGRENCI INTO @AD_SOYAD_C, @OGRENCI_NO_C -- Select sorgusunda gelen sütunlar sırasına göre değişkenlere atanır Örn : @AD_SOYAD_C = @AdiSoyadi

	WHILE @@FETCH_STATUS =0
		BEGIN
			
			PRINT @AD_SOYAD_C + ' ' + @OGRENCI_NO_C
			--SELECT , INSERT , UPDATE İŞLEMLERİ YAPILABİLİR

			FETCH NEXT FROM CRS_OGRENCI INTO @AD_SOYAD_C, @OGRENCI_NO_C
 
		END

	CLOSE CRS_OGRENCI -- Cursor ü kapatıyoruz.

	DEALLOCATE CRS_OGRENCI -- Cursor ile işimiz bittiğinde sistemden tamizlememiz için DEALLOCATE etmemiz gerekmektedir.



--

[raw] [/raw]

 

Sonuç :

Salih ŞEKER 11111

Cüneyt Medet 22222

Ali Bulut 33333

TEST ADI 44444

testadi 2 55555

DENEME SP 9999

DENEME SP 9999

 

Tanımladığımız cursorda işlem olarak gelen veriyi print ile yazdırdık , bu alanda gelen veriler ile farklı işlemler yaptırabiliriz. UPDATE ,INSERT ,SELECT v.s. işlemler yapılabilir.

Print Friendly, PDF & Email

You may also like...

2 Responses

  1. SALIH BEY;
    ELLERINIZE SAGLIK. GERÇEK ANLAMDA ÇOK FAYDALI OLMUŞ. ILK YARDIM KLASORUNE EKLEYECEGIM SITENIZI. TEKRARDAN TESEKKUR EDERIM..

  2. eyüp dedi ki:

    Gerçekten çok faydalı bir paylaşım Emeğinize sağlık .
    teşekkür ederim.

Bir cevap yazın