2012-11-07 37 views
1

我正在审查一个存储过程,其中我找到了下面的一段代码。看看代码,我的理解是,我们正在创建一个名为@QuestionInclude的变量,并在动态SQL语句中传递它的值。但是这个代码是如何工作的?如何在动态sql查询中传递输出变量

这对我来说是一个新的东西。

declare @QuestionInclude varchar(10) 
select @sqln = 'select @QuestionInclude = 1 from ##Stg_Prelim' 
exec sp_executesql @sqln,N'@QuestionInclude varchar(10) output',@QuestionInclude output 

回答

1

可能是这将帮助你

http://msdn.microsoft.com/en-us/library/ms188001.aspx

过程sp_executesql有参数@stmt,这是实际的语句来运行,@params - 参数声明,然后在@params

声明的所有参数

按名称传递参数也更好

declare @QuestionInclude varchar(10), @stmt nvarchar(max), @params nvarchar(max) 

select @stmt = 'select @QuestionInclude = 1 from ##Stg_Prelim' 
select @params = '@QuestionInclude varchar(10) output' 

exec sp_executesql 
    @stmt = @stmt, 
    @params = @params, 
    @QuestionInclude = @QuestionInclude output