SQL Server’da Cursor Kullanmadan Tablo Üzerinde Dolaşmak
Herkese merhaba,
Bu yazıda SQL Server’da Cursor kullanmadan tablo üzerinde dolaşmak hakkında bilgi vereceğim.
SQL Server’da tablo üzerinde dolaşmak için çoğu durumda çoğu kişi Cursor kullanmayı tercih eder fakat bu oldukça maliyetli bir işlemdir.
Cursor kullanılması gereken yerlerde elbette Cursor kullanılır. Her yapılan işlemde Cursor kullanılması ise SQL Server’a ekstra yük bindirir.
Aşağıdaki örnekte Cursor kullanarak ve Cursor kullanmadan tablo üzerinde nasıl dolaşılır öğreneceksiniz.
Örnekleri Northwind veritabanını kullanarak yaptım.
İlk örneğimiz Cursor ile ilgili.
DECLARE @ProductID INT;
DECLARE @ProductName NVARCHAR(50);
DECLARE Cur_Ornek CURSOR FAST_FORWARD FOR SELECT ProductID FROM Products;
OPEN Cur_Ornek;
FETCH NEXT FROM Cur_Ornek
INTO @ProductID;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @ProductName = ProductName
FROM Products
WHERE ProductID = @ProductID;
PRINT 'Ürün Adı : ' + @ProductName;
FETCH NEXT FROM Cur_Ornek
INTO @ProductID;
END;
CLOSE Cur_Ornek;
DEALLOCATE Cur_Ornek;
GO
Yukarıdaki sorguyu çalıştırınca aşağıdaki sonucu göreceksiniz.
İkinci örneğimiz While döngüsü ile ilgili.
DECLARE @KayitSayisi INT;
DECLARE @ProductID INT = 1;
DECLARE @ProductName NVARCHAR(50);
SELECT @KayitSayisi = COUNT(*)
FROM dbo.Products;
WHILE @ProductID <= @KayitSayisi
BEGIN
SELECT @ProductName = ProductName
FROM dbo.Products
WHERE ProductID = @ProductID;
PRINT 'Ürün Adı : ' + @ProductName;
SET @ProductID += 1;
END;
GO
Yukarıdaki sorguyu çalıştırınca aşağıdaki sonucu göreceksiniz.
Görüldüğü üzere Cursor kullanmadan da tablo üzerinde dolaşabilirsiniz. Cursor’a göre sorgusu daha kısa. Ayrıca While döngüsünün işlemi tamamlaması Cursor’a göre daha hızlıdır.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.