# Збережені процедури проти динамічного SQL - старі дебати...

<datetime class="hidden">2003-12-07T00:00</datetime>

<!-- category -- mostlylucidcouk, Imported, Database, Performance -->
[Frans Bouma](http://weblogs.asp.net/fbouma) насправді не бачить сенсу використання [Збережені процедури перевищено за допомогою Dynamic SQL](http://weblogs.asp.net/fbouma/posts/38178.aspx) - так Френсе, що ти робиш з такими речами, як [Індексовані перегляди](http://www.sqlteam.com/item.asp?ItemID=1015)і Визначені користувачем функції - які є, по суті, SP, але немає відповідників для Dynamic SQL, отже, ви пропонуєте мені більше не використовувати ці функції?
Чесно кажучи, я завжди трохи схильний довіряти аргументам про підхід до доступу до даних від когось, хто має [відсоткова ставка](http://www.llblgen.com/) (Я знаю [LLBLGen Pro](http://www.llblgen.com/) підтримує SPs, але вона має сильне упередження до динамічно створеного T-SQL), щось на зразок MS в дебатах Linux ... slight, надавши інтерес (або колишній) [Головний директор Halliburton](http://www.fool.com/News/mft/2003/mft03032502.htm) увімкнено [Ірак](http://www.thetip.org/art_Haliburton_Awarded_Massive_Iraqi_Oil_Reconstruction_Deal268_icle.html)- але це інша справа: -)
Я використовую SPES майже виключно для доступу до даних, я не маю жодного інтересу в одному підході або іншому, я використовував Dynamic SQL у погані старі дні ASP/ VBScript, але переключився на SP, коли мені потрібно було більше Oomph у коді доступу до даних. У мене є сильний вибір даних для маніпуляції за допомогою Set логіки, так, для більш складних операцій я доведу дані до коду, але загалом, я використовую DB для маніпуляції і повертаю найменшу кількість даних назад до коду. Причина, чому я роблю це не є агресивністю, просто мені легше фільтрувати і комбінувати свої дані найближчі до його джерела.
Я також вважаю, що деякі з аргументів Frans дещо відсутні, є аргумент для використання Dynamic SQL, де вам потрібно реагувати на введення користувача для фільтрування даних; звіти є класичним прикладом того, де ви можете знайти елементи відповідних даних на основі змінної кількості вхідних даних - для цього, звичайно ж, використовувати Dynamic SQL, але у 90% випадків я просто хочу отримати дані з DB так швидко і безболісно, як це можливо, це місце, де я б використав SP. Я часто використовую SCL. [Змінні таблиці](http://www.eggheadcafe.com/articles/20010823.asp) для compositing і фільтрування даних, обробки SP як set постачальників і зміни кінцевого результату виводу, щоб містити лише потрібні мені дані - зазвичай, для цього потрібно декілька поїздок до та з DB (ми тут розмовляємо у десятках для кожного екземпляра) і буде досить повільним, а також викликати інтенсивний мережевий трафік, який я, зазвичай, можу дозволити собі дуже масштабовані сайти.
Коротко кажучи, для моїх цілей, 90% збережених процедур, 10% динамічних SQL працює як абсолютні заяви про такі речі - це як коментарі до релігії, політики, відкритого Джерела чи Java - я не вірю, що в будь-якій з цих сфер, надто глибоко вкорінені погляди - коні - це моя думка: -)