T-SQL İmleçler (Cursor)

T-SQL İmleçler (Cursor) konusu bu makalemizde detaylı olarak ele alıyor ve örnekler ile açıklıyoruz. Peki, T-SQL İmleçler (Cursor) Nedir? Gelin bir göz atalım.

T-SQL İmleçler (Cursor)

T-SQL İmleçler (Cursor)

Veri tabanı sistemlerinde imleçler o an işlenen satırdaki bilgileri çekmek içi kullanılır.

Kullanımı:

DECLARE imleç_ismi CURSOR FAST_FORWARD FOR SELECT ifadesi

FETCH Next: Bir sonraki satıra geçer.

FETCH Prior: Bir önceki satıra geçer.

FETCH First: İlk satıra geçer.

FETCH Last: Son satıra geçer.

İmleçleri kapatmak için CLOSE, imleci hafızadan silmek için DEALLOCATE komutu kullanılır.

Örnek: Öğrencileri ders ortalamasına göre kaçıncı sırada olduğunu bulan T-SQL kodunu yazalım.

DECLARE @Kayitlar TABLE (
	sira INT
	,ogrid INT
	,dersid INT
	,ortalama FLOAT
	,durumu NVARCHAR(10)
	,harfnotu NVARCHAR(5)
	)
DECLARE @sira INT
DECLARE @ogrid INT
	,@dersid INT
	,@ortalama FLOAT
DECLARE @durumu NVARCHAR(10)
	,@harfnotu NVARCHAR(5)

DECLARE DersKayitlari CURSOR FAST_FORWARD
FOR
SELECT ogr_id
	,dersid
	,[dbo].[FN_OrtalamaBul](vize, final, but) AS ortalama
	,[dbo].[FN_Durumu](vize, final, but) AS durumu
	,[dbo].[FN_HarfNotu](vize, final, but) AS harfNotu
FROM OgrDersleri
ORDER BY ortalama DESC

OPEN DersKayitlari

FETCH NEXT
FROM DersKayitlari
INTO @ogrid
	,@dersid
	,@ortalama
	,@durumu
	,@harfnotu

SET @sira = 0

WHILE (@@FETCH_STATUS = 0)
BEGIN
	SET @sira = @sira + 1

	INSERT INTO @Kayitlar
	VALUES (
		@sira
		,@ogrid
		,@dersid
		,@ortalama
		,@durumu
		,@harfnotu
		)

	FETCH NEXT
	FROM DersKayitlari
	INTO @ogrid
		,@dersid
		,@ortalama
		,@durumu
		,@harfnotu
END

CLOSE DersKayitlari

DEALLOCATE DersKayitlari

SELECT *
FROM @Kayitlar AS kayit
INNER JOIN Ogrenci ON kayit.ogrid = Ogrenci.ogr_id

Tepkiniz Nedir?

like

dislike

love

funny

angry

sad

wow