我有一个带有 nvarchar 参数的存储过程。我希望调用者在使用此 SP 时提供 sql 命令的文本。
如何从 SP 中执行提供的 sql 命令?
这可能吗?-
我认为使用 EXEC 是可能的,但以下内容:
EXEC @script
错误指示无法通过给定名称找到存储过程。由于它是一个脚本,这显然是准确的,但让我认为它没有按预期工作。
最佳答案
使用:
BEGIN
EXEC sp_executesql @nvarchar_parameter
END
...假设参数是一个完整的 SQL 查询。如果不是:
DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'SELECT ...' + @nvarchar_parameter
BEGIN
EXEC sp_executesql @SQL
END
注意 SQL Injection attacks ,我强烈推荐阅读 The curse and blessing of Dynamic SQL .
关于sql - 如何执行作为 sp 参数传递的 sql 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285872/