Я могу понять желание избежать использования курсора из-за накладных расходов и неудобств, но похоже, что происходит серьезная мания фобии курсора, когда люди делают все возможное, чтобы избежать необходимости его использовать.
Например, был задан один вопрос, как сделать что-то очевидно тривиальное с курсором, и принятый ответ, предложенный с использованием рекурсивного запроса общего табличного выражения (CTE) с рекурсивной настраиваемой функцией, хотя это ограничивает количество строк, которые могут быть обработаны, до 32 (из-за ограничения рекурсивного вызова функции на сервере sql). Это кажется мне ужасным решением проблемы долговечности системы, не говоря уже о огромных усилиях, направленных на то, чтобы избежать использования простого курсора.
В чем причина такой безумной ненависти? Издал ли какой-нибудь «авторитетный авторитет» фетву против курсоров? Неужели в сердце курсоров таится какое-то невыразимое зло, которое развращает нравы детей или что-то в этом роде?
Вопрос вики, больше интересующий ответ, чем представитель.
Связанная информация:
Курсоры быстрой перемотки SQL Server
РЕДАКТИРОВАТЬ: позвольте мне быть более точным: я понимаю, что курсоры не должны использоваться вместо обычных реляционных операций ; это и ежу понятно. Чего я не понимаю, так это то, что люди стараются изо всех сил избегать курсоров, как будто у них есть кути или что-то в этом роде, даже когда курсор является более простым и / или более эффективным решением. Меня сбивает с толку иррациональная ненависть, а не очевидная техническая эффективность.
32
- нонсенс. Предположительно вы думаете о рекурсивных триггеров и максимум @@NESTLEVEL
из 32
. Его можно задать в запросе OPTION (MAXRECURSION N)
со значением по умолчанию 100
и без 0
ограничений.