Курсоры - это механизм явного перечисления строк результирующего набора, а не его извлечения как такового.
Однако, хотя их может быть удобнее использовать для программистов, привыкших писать While Not RS.EOF Do ...
, их обычно следует избегать в хранимых процедурах SQL Server, если это вообще возможно - если вы можете написать запрос без использования курсоров, вы дадите у оптимизатора гораздо больше шансов найти быстрый способ его реализации.
Честно говоря, я никогда не находил реалистичного варианта использования курсора, которого нельзя было бы избежать, за исключением нескольких административных задач, таких как перебор всех индексов в каталоге и их восстановление. Я предполагаю, что они могут иметь какое-то применение при создании отчетов или слиянии писем, но, вероятно, более эффективно выполнять работу, подобную курсору, в приложении, которое общается с базой данных, позволяя ядру базы данных делать то, что он делает лучше всего, - манипулировать наборами.
person
Jeffrey Hantin
schedule
19.11.2010