【发布时间】:2010-08-13 20:11:18
【问题描述】:
如果我们需要一些只能通过动态查询才能获得的信息,那么不应该直接将其写入应用程序代码(在 DAL 中)而不是存储过程中吗?
因为如果我们在其中使用动态查询,即已经保存的执行执行计划,我们从 SP 中获得的好处已经失去了。
【问题讨论】:
-
我觉得代码的可维护性更好。
标签: .net sql sql-server
如果我们需要一些只能通过动态查询才能获得的信息,那么不应该直接将其写入应用程序代码(在 DAL 中)而不是存储过程中吗?
因为如果我们在其中使用动态查询,即已经保存的执行执行计划,我们从 SP 中获得的好处已经失去了。
【问题讨论】:
标签: .net sql sql-server
除了它们的执行计划缓存功能之外,还有许多其他 facets of stored procedures 需要考虑,所以我认为仅仅因为它们将包含一个临时查询而忽略它们的使用是不公平的。
(另外值得注意的是,格式正确的动态SQL位是no barrier执行计划重用)
【讨论】:
如果您的应用程序当前只调用存储过程,则保持一致并调用存储过程并在其中执行动态 SQL。
如果您的应用程序已经充满了生成的 SQL 语句,只需在那里构建动态 SQL。
请记住,使用存储过程动态生成 SQL 并不能保护您免受注入攻击。但是,该程序的参数类型和大小限制有助于减少您的注射暴露。
【讨论】: