Вероятно, ошибка вызвана слишком большим количеством возвращаемых наборов записей, а не ошибкой логики вашего SP или самого курсора. Посмотрите на этот пример:
DECLARE @I INT
SET @I=0
WHILE @I<200 BEGIN
SELECT * FROM INFORMATION_SCHEMA.TABLES
SET @I = @I + 1
END
Будет выполняться несколько раз (чуть больше 100), а затем завершится с ошибкой:
В запросе превышено максимальное количество наборов результатов, которые могут отображаться в таблице результатов. В сетке отображаются только первые 100 наборов результатов.
SSMS имеет ограничение на количество наборов записей, которые она может показать вам.
Один из быстрых способов обойти это ограничение - нажать Ctrl + T (или меню Query-> Results to-> Results to Text), чтобы заставить вывод быть простым текстом, а не табличным набором записей. В конечном итоге вы достигнете другого предела (окно результатов не может обрабатывать бесконечное количество текста), но оно будет намного больше.
В приведенном выше примере вы не получите сообщение об ошибке после изменения результатов в текстовом виде!