【发布时间】:2011-01-18 03:45:55
【问题描述】:
我有一个带有 nvarchar 参数的存储过程。我希望调用者在使用此 SP 时为 sql 命令提供文本。
如何从 SP 中执行提供的 sql 命令?
这可能吗?-
我认为可以使用 EXEC,但如下:
EXEC @script
错误表明它无法找到给定名称的存储过程。由于它是一个脚本,这显然是准确的,但让我认为它没有按预期工作。
【问题讨论】:
-
我同意所有的安全 cmets,但您可以尝试 [EXEC (@script) ],它应该可以工作。
-
@Sparky:虽然有效,但
EXEC不会缓存查询计划,而EXEC sp_executesql将:sommarskog.se/dynamic_sql.html -
是的,但是如果用户要为 SQL 提供文本(这让我很害怕,但是),我希望查询计划会有所不同。现在,如果我们只能说服人们不要让用户这样做......
-
[ EXEC (@script) ] 也可以。谢谢 Sparky。
标签: sql sql-server sql-server-2005 tsql dynamic-sql