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