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

Dan*_*nor 2 sql t-sql sql-server sql-server-2005 dynamic-sql

我有一个带有nvarchar参数的存储过程.我希望调用者在使用此SP时为sql命令提供文本.

如何从SP内执行提供的sql命令?

这有可能吗? -

我认为可以使用EXEC,但以下内容:

EXEC @script
Run Code Online (Sandbox Code Playgroud)

错误表明它无法按给定名称查找存储过程.由于它是一个脚本,这显然是准确的,但让我觉得它没有按预期工作.

OMG*_*ies 8

使用:

BEGIN

  EXEC sp_executesql @nvarchar_parameter

END
Run Code Online (Sandbox Code Playgroud)

...假设参数是一个完整的SQL查询.如果不:

DECLARE @SQL NVARCHAR(4000)
SET @SQL = 'SELECT ...' + @nvarchar_parameter

BEGIN

  EXEC sp_executesql @SQL

END
Run Code Online (Sandbox Code Playgroud)

注意SQL注入攻击,我强烈建议阅读动态SQL的诅咒和祝福.