Sql

Ms-Sql’de CURSOR ve FETCH kullanımı

Bu fonksiyonda Öğrenci isimlerini yan yana virgülle ayırıp aldık.
Bu örnek SELECT cümleciği değiştirilerek başkaca sorgularla kullanılabilir.
@r verinin tamamı için @rs ise geçerli row için kullanılmış değişkenlerdir.
Açılan CURSOR’ün mutlaka CLOSE ve DEALLOCATE edilmesi gerekmektedir.

CREATE FUNCTION [dbo].[IsimleriGetir] (@SinifID INT)
RETURNS VARCHAR(800)
AS
BEGIN
DECLARE @r VARCHAR(800),@rs VARCHAR(800)
DECLARE c1 CURSOR
FOR SELECT Ogrenciler.Adi FROM Ogrenciler where SinifId=@SinifID
OPEN c1
FETCH NEXT FROM c1 INTO @rs
SET @r=@rs
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM c1 INTO @rs
if(@@FETCH_STATUS=0)
SET @r=@r+','+@rs
END;
--print @r
CLOSE c1
DEALLOCATE c1
RETURN(@r);
END

Kullanımı: SELECT isimleriGetir(5);
5 nolu sınıf için