Вы можете вкладывать курсоры, но вы должны стремиться удалить эти курсоры в пользу операции на основе SET, если можете. В противном случае, скорее всего, производительность не будет большой, особенно при больших объемах данных. Я бы использовал курсоры / цикл только в крайнем случае.
Дополнительные пояснения:
Использование курсоров означает, что вы будете выполнять итерацию раунд за строкой для выполнения определенной операции (RBAR - Row By Agonizing Row). Это не так эффективно, как выполнение операции одним циклическим образом над набором данных за один раз (т.е. на основе набора).
например. грубый пример, чтобы подсчитать количество строк в таблице.
Вариант 1: Неприятный способ RBAR, открыть курсор на столе, выполнить цикл и увеличить переменную счетчика.
Вариант 2: Потрясающий подход на основе множеств, запустите один SELECT, например: SELECT COUNT(*) FROM YourTable
Так что я имею в виду, попытайтесь реорганизовать ваш SQL, чтобы найти подход, основанный на множестве, для достижения желаемого результата. Как правило, очень мало случаев, когда подход с использованием цикла или курсора не может быть заменен подходом, основанным на множестве.