开发者社区 问答 正文

SQL Server动态查询

我有15个存储过程,这些存储过程从公用表返回数据,然后将该表与特定表连接以检索清单。

例:

Common: tblCommon Specific: tblSpecific 有什么办法可以将名称“ tblSpecific”作为变量传递到单个存储过程中,如下所示?

SELECT .... FROM tblCommon c INNER JOIN @TABLE s on c.primaryKey = s.foreignKey

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 17:00:55 380 分享 版权
1 条回答
写回答
取消 提交回答
  • 执行此操作的方法是通过sp_executesql()存储过程运行的动态生成的SQL。

    通常,您将所需的表名传递给主过程,构建要执行的SQL的ncharvar字符串,然后将其传递给sp_executesql。

    Dynamic SQL的诅咒和祝福是关于我描述所有ins和outs的最佳页面。

    最大的陷阱之一是,如果您使用动态SQL,则调用存储过程的用户不仅必须具有对该过程的执行权限,而且还必须具有访问基础表的权限。我提供的链接还描述了如何解决该问题。

    2019-11-18 17:01:08
    赞同 展开评论