sql - 如何执行作为 sp 参数传递的 sql 文本?

标签 sql sql-server sql-server-2005 tsql dynamic-sql

我有一个带有 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/

相关文章:

database - 在函数中使用删除或更新命令

sql - 使用输出变量动态执行存储过程

sql - 确定数据库当前是否正在镜像?

sql - SQL Server Case 语句中的条件和条件

sql-server - SQL Server 目标平台 dacpacs 不会发布到 Microsoft Azure SQL v12

sql - 在 SQL Server 中使用 ISNULL() 时是否存在任何性能问题?

sql-server - SQL Server 2005 中 varbinary(max) 列中的 XML 无效

java - mySQL 中的 ID 值是 auto_increment 但似乎是在 netbeans 中生成的

mysql - 像数组一样迭代结果集

sql - FROM 子句中子选择的 Oracle 语法?