Пример использования курсоров
Falk0ner, вс, 06/07/2008 - 15:34.
Если курсор не должен "отслеживать" изменения в таблице по ходу своей работы и не должен менять значение таблицы желательно добавление опций предотвращающих блокирование объектов на время работы курсора:
Пример использования курсоров
Вот пример использования курсора для прохода по каждой записи взапросе и операции с этой записью:
Declare @MyVar int
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Declare" title="www.drkb.ru
Declare">www.drkb.ru
Declare</a> c cursor for
Select MyField From MyTable Where MyField2=1
/*
c - переменная курсора
Select ... выражение к каждой записи которого посредством курсора можно достучаться
*/
Open c --открываем курсор, с этой строкой будет выполнен приведенный выше Select
Fetch From c Into @MyVar -- вытаскиваем первую запись и присваиваем значение MyField в переменную @MyVar
While @@Fetch_Status = 0 -- проверяем не последняя ли это запись, а точнее - смогли ли мы возвратить запись
Begin
Print @MyVar -- что-то делаем с полученными данными
Fetch From c Into @MyVar -- вытаскиваем следующую запись и присваиваем значение MyField в переменную @MyVar
End
Close c -- закрывам курсор, закрываем запрос, ОПЕРАТОР ОБЯЗАТЕЛЕН!
Deallocate c -- уничтожаем переменную, ОПЕРАТОР ОБЯЗАТЕЛЕН!
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Declare" title="www.drkb.ru
Declare">www.drkb.ru
Declare</a> c cursor for
Select MyField From MyTable Where MyField2=1
/*
c - переменная курсора
Select ... выражение к каждой записи которого посредством курсора можно достучаться
*/
Open c --открываем курсор, с этой строкой будет выполнен приведенный выше Select
Fetch From c Into @MyVar -- вытаскиваем первую запись и присваиваем значение MyField в переменную @MyVar
While @@Fetch_Status = 0 -- проверяем не последняя ли это запись, а точнее - смогли ли мы возвратить запись
Begin
Print @MyVar -- что-то делаем с полученными данными
Fetch From c Into @MyVar -- вытаскиваем следующую запись и присваиваем значение MyField в переменную @MyVar
End
Close c -- закрывам курсор, закрываем запрос, ОПЕРАТОР ОБЯЗАТЕЛЕН!
Deallocate c -- уничтожаем переменную, ОПЕРАТОР ОБЯЗАТЕЛЕН!
Если курсор не должен "отслеживать" изменения в таблице по ходу своей работы и не должен менять значение таблицы желательно добавление опций предотвращающих блокирование объектов на время работы курсора:
--©Drkb v.3(2007): <a href="http://www.drkb.ru
Declare" title="www.drkb.ru
Declare">www.drkb.ru
Declare</a> c cursor
Local Fofward_Only Static Read_Only
for
Select MyField From MyTable Where MyField2=1
Declare" title="www.drkb.ru
Declare">www.drkb.ru
Declare</a> c cursor
Local Fofward_Only Static Read_Only
for
Select MyField From MyTable Where MyField2=1
Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Отправить комментарий