【问题标题】:What's the point of writing a dynamic query in a stored procedure在存储过程中编写动态查询有什么意义
【发布时间】:2010-08-13 20:11:18
【问题描述】:

如果我们需要一些只能通过动态查询才能获得的信息,那么不应该直接将其写入应用程序代码(在 DAL 中)而不是存储过程中吗?

因为如果我们在其中使用动态查询,即已经保存的执行执行计划,我们从 SP 中获得的好处已经失去了。

【问题讨论】:

  • 我觉得代码的可维护性更好。

标签: .net sql sql-server


【解决方案1】:

除了它们的执行计划缓存功能之外,还有许多其他 facets of stored procedures 需要考虑,所以我认为仅仅因为它们将包含一个临时查询而忽略它们的使用是不公平的。

(另外值得注意的是,格式正确的动态SQL位是no barrier执行计划重用)

【讨论】:

  • 不要忘记安全性(“存储过程方面”中没有提到。存储过程的权限非常容易处理,应用程序开发人员可能无法访问SP源代码。跨度>
【解决方案2】:

如果您的应用程序当前只调用存储过程,则保持一致并调用存储过程并在其中执行动态 SQL。

如果您的应用程序已经充满了生成的 SQL 语句,只需在那里构建动态 SQL。

请记住,使用存储过程动态生成 SQL 并不能保护您免受注入攻击。但是,该程序的参数类型和大小限制有助于减少您的注射暴露。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2014-06-04
    • 1970-01-01
    相关资源
    最近更新 更多