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.

SQL Server'da Cursor Kullanmadan Tablo Üzerinde Dolaşmak

İ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.

SQL Server'da Cursor Kullanmadan Tablo Üzerinde Dolaşmak

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.

383 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!