SQL Server’da Cursor Kullanmadan Tablo Üzerinde Gezinmek
Herkese merhaba,
Bu yazıda SQL Server’da cursor kullanmadan tablo üzerinde gezinmek hakkında bilgi vereceğim.
SQL Server’da birçoğunuz büyük ihtimal cursor kullanmıştır. Kullanmayanlarda üzülmesinler artık birçok insan gerekmedikçe cursor kullanmıyor ama siz yine de nasıl kullanıldığını öğrenin.
Konuyu yazma sebebim bu tarz işlemlerin cursor kullanılmadan nasıl yapılabileceği hakkında bilgi sahibi olmanız. Ayrıca bu yöntem cursor kullanmaya göre daha verimli bir yöntemdir ki büyük çaplı işlemlerde bunu hissedersiniz.
İşlemi yaparken basit bir tablo oluşturdum ve tablo üzerinde gezinirken PRINT kullanarak seçtiğim bir kolonu yazdırdım. Siz güncelleme ya da silme işlemlerinde de kullanabilirsiniz.
Aşağıdaki kodu kendinize göre düzenleyerek istediğiniz işlemleri rahatlıkla yapabilirsiniz.
--Tablo oluşturmak
CREATE TABLE AdSoyadTablosu (
Id INT PRIMARY KEY IDENTITY (1, 1)
,AdSoyadi NVARCHAR(30)
)
--Tabloya veri eklenmesi
INSERT INTO AdSoyadTablosu (AdSoyadi)
VALUES (N'Yavuz Selim Kart'), (N'Hasan Ali Kart'), (N'Bilge Nuray Kart')
--Tablonun kontrol edilmesi
SELECT
*
FROM AdSoyadTablosu
--Cursor kullanmadan tablo üzerinde dolaşmak
--Sondan başa
DECLARE @Sayac INT;
DECLARE @AdSoyad NVARCHAR(30);
SELECT
@Sayac = COUNT(*)
FROM AdSoyadTablosu;
WHILE @Sayac > 0
BEGIN
SELECT
@AdSoyad = AdSoyadi
FROM AdSoyadTablosu
WHERE Id = @Sayac;
PRINT @AdSoyad;
SET @Sayac = @Sayac - 1;
END;
--Cursor kullanmadan tablo üzerinde dolaşmak
--Baştan sona
DECLARE @BaslangicSayisi INT = 1
DECLARE @Sayac INT;
DECLARE @AdSoyad NVARCHAR(30);
SELECT
@Sayac = COUNT(*)
FROM AdSoyadTablosu;
WHILE @Sayac >= @BaslangicSayisi
BEGIN
SELECT
@AdSoyad = AdSoyadi
FROM AdSoyadTablosu
WHERE Id = @BaslangicSayisi;
PRINT @AdSoyad;
SET @BaslangicSayisi = @BaslangicSayisi + 1;
END;
Yukarıda cursor kullanmadan tablo üzerinde dolaşmak kısmını hem sondan hem de baştan başlayacak şekilde yazdım. Hangisini isterseniz kullanabilirsiniz.
Tabloyu oluşturup kodları çalıştırdığınızda aşağıdaki gibi bir sonuç göreceksiniz.
Görüldüğü üzere tablo üzerinde dolaşılıp AdSoyad kolonu yazılmış oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.