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)
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?