SQL Server’da Cursor Kullanımı

Herkese merhaba,

Bu yazıda size SQL Server’da Cursor kullanımından bahsedeceğim.

Cursor’lar seçilen veritabanı üzerinde satır satır işlem yapmaya olanak sağlayan veritabanı nesneleridir. Kıcasa kayıtların üzerinde satır satır gezinebiliriz. Bu sayede istenilen satırlarda işlem yapmamıza olanak sağlamış olurlar.

Konu hakkında örneği Northwind veritabanını kullanarak inceleyelim.

--Kod içinde kullanılan değişken tanımlanır.

DECLARE @KategoriAd NVARCHAR(100)

--Cursor tanımlanır

DECLARE Cursorumuz CURSOR
FOR
    SELECT  CategoryName
    FROM    dbo.Categories

--Cursor kullanım için açılır

OPEN Cursorumuz

--Satırlarda cursorumuzun ilerleme kısmı	

FETCH NEXT FROM Cursorumuz 

--İlerleyen kategoriadları @KategoriAd değişkenine atanır

INTO @KategoriAd

--While komutuyla kayıtlarda dolaşma imkanı buluruz. Eğer FETCH_STATUS 0 ise kayıt başarılı, -1 ise kayıt başarısız, -2 ise kayıt bulunamadığını gösterir.

WHILE @@FETCH_STATUS = 0

--Begin ve end başla bitir kısımlarıdır.
    BEGIN

  --Bu kısımda satır satır alınan kayıtlarla istenilen işlem yapılabilir. Yani işlem yapılma kısmı burası

        SELECT  CategoryName
        FROM    dbo.Categories
        WHERE   CategoryName = @KategoriAd

        FETCH NEXT FROM Cursorumuz INTO @KategoriAd

    END

--İşlem yapılan datayı serbest bırakır. Tablo üstündeki kilit işlemini kaldırır.

CLOSE Cursorumuz

--Cursorumuzu yok eder

DEALLOCATE Cursorumuz

Kodu çalıştırdığımız zaman satır satır kategoriler üzerinde dönerek kategori adlarını bize verecektir. Her satır üzerinde hangi kısım ne işe yarıyor açıklamaya çalıştım.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

987 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!