Я можу зрозуміти, що хочу уникнути необхідності використання курсору через накладні витрати і незручності, але схоже, що існує якась серйозна манія курсору-фобії, де люди збираються з великими зусиллями, щоб уникнути їх використання.
Наприклад, одне запитання задало, як зробити щось очевидно тривіальне за допомогою курсору та прийняту відповідь, запропоновану за допомогою рекурсивного запиту загальної таблиці (CTE) з рекурсивною спеціальною функцією, хоча це обмежує кількість рядків, які можна обробити до 32 (через обмеження рекурсивної функції виклику на сервері sql). Це вражає мене жахливим рішенням для довголіття системи, не кажучи вже про величезні зусилля, щоб уникнути використання простого курсору.
У чому причина такого рівня шаленої ненависті? Хтось із «помічених авторитетів» видав фетву проти курсорів? Чи якесь невимовне зло ховається в серці курсорів, що розбещує мораль дітей чи щось таке?
Питання Wiki, більше зацікавлене у відповіді, ніж відповідь.
Інформація про те:
Курсори швидкого переходу вперед SQL Server
EDIT: дозвольте бути більш точним: я розумію, що курсори не слід використовувати замість звичайних реляційних операцій ; це нереалізатор. Що я не розумію, це те, що люди відмовляються від шляху, щоб уникнути курсорів, як-от у них є печиво чи щось подібне, навіть коли курсор є більш простим та / або більш ефективним рішенням. Мене бентежить нераціональна ненависть, а не очевидна технічна ефективність.
32
це нісенітниця. Імовірно ви думаєте про рекурсивних тригерів і максимум @@NESTLEVEL
з 32
. Він може бути встановлений у запиті, OPTION (MAXRECURSION N)
за замовчуванням 100
і 0
значенням необмежений.