Пример использования курсоров

Previous  Top  Next

    
 

 

Вот пример использования курсора для прохода по каждой записи взапросе и операции с этой записью:

 

Code:

Declare @MyVar int

 

--©Drkb v.3(2007): www.drkb.ru

 

Declare c cursor for

Select MyField From MyTable Where MyField2=1

/*

c - переменная курсора

Select ... выражение к каждой записи которого посредством курсора можно достучаться

*/

 

Open c --открываем курсор, с этой строкой будет выполнен приведенный выше Select

 

Fetch Next From c Into @MyVar -- вытаскиваем первую запись и присваиваем значение MyField в переменную @MyVar

 

While @@Fetch_Status = 0 -- проверяем не последняя ли это запись, а точнее - смогли ли мы возвратить запись

Begin

   Print @MyVar -- что-то делаем с полученными данными

   Fetch Next From c Into @MyVar -- вытаскиваем следующую запись и присваиваем значение MyField в переменную @MyVar

End

 

Close c -- закрывам курсор, закрываем запрос, ОПЕРАТОР ОБЯЗАТЕЛЕН!

Deallocate c -- уничтожаем переменную, ОПЕРАТОР ОБЯЗАТЕЛЕН!

 

Если курсор не должен "отслеживать" изменения в таблице по ходу своей работы и не должен менять значение таблицы желательно добавление опций предотвращающих блокирование объектов на время работы курсора:

 

 

Code:

--©Drkb v.3(2007): www.drkb.ru

 

Declare c cursor

Local Fofward_Only Static Read_Only

for

Select MyField From MyTable Where MyField2=1

 

©Drkb::02810

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)