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 :
- Cursor için kullanacağımız paramatreleri ve data tiplerini tanımlayacağız (@AD_SOYAD_C, @OGRENCI_NO_C v.s.)
- Cursorde işlem yapacağımız verileri select sorgusu ile getiriyoruz ve cursur a giriş yapılacak sütunlar belirtiliyor.
- Cursor açılır ve yapılıcak işlemler tanımlanır.
- 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.
SALIH BEY;
ELLERINIZE SAGLIK. GERÇEK ANLAMDA ÇOK FAYDALI OLMUŞ. ILK YARDIM KLASORUNE EKLEYECEGIM SITENIZI. TEKRARDAN TESEKKUR EDERIM..
Gerçekten çok faydalı bir paylaşım Emeğinize sağlık .
teşekkür ederim.