Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Освобождение курсора



Закрытие курсора необязательно освобождает ассоциированную с ним память. В некоторых реализациях нужно явным образом освободить ее с помощью оператора DEALLOCATE. После освобождения курсора освобождается и память, при этом становится возможным повторное использование имени курсора.

DEALLOCATE { имя_курсора | @имя_переменной_курсора }

Для контроля достижения конца курсора рекомендуется применять функцию: @@FETCH_STATUS

Функция @@FETCH_STATUS возвращает:

0, если выборка завершилась успешно;

-1, если выборка завершилась неудачно вследствие попытки выборки строки, находящейся за пределами курсора;

-2, если выборка завершилась неудачно вследствие попытки обращения к удаленной или измененной строке.

Пример объявления и открытия курсора:

--объявление курсора

DECLARE My_Curcor CURSOR SCROLL FOR SELECT * FROM R1

-- использование переменной для объявления курсора

DECLARE @MyCursor CURSOR

SET @MyCursor=CURSOR LOCAL SCROLL FOR

SELECT * FROM Клиент

-- открытие курсора

OPEN My_Curcor

Пример использования курсора для вывода номеров счетов с балансом выше среднего.

DECLARE @nomer varchar(50),

@balans money,

@avg_balans money,

@message varchar(250)

SELECT @avg_balans = avg(Баланс) FROM R1

PRINT ' Список счетов'

DECLARE klient_cursor CURSOR LOCAL FOR

SELECT * FROM R1 WHERE Баланс > @avg_balans ORDER BY Баланс

OPEN klient_cursor

FETCH NEXT FROM klient_cursor INTO @nomer, @balans

WHILE @@FETCH_STATUS=0

BEGIN

SELECT @message='Счет'+@nomer +'Баланс '+CAST(@balans as varchar)

PRINT @message

-- переход к следующему клиенту

FETCH NEXT FROM klient_cursor INTO @nomer, @balans

END

CLOSE klient_cursor

DEALLOCATE klient_cursor





Дата публикования: 2015-09-17; Прочитано: 208 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...