1

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

这对我来说很奇怪而且很新鲜。

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

1 回答 1

0

可能这会帮助你

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
于 2012-11-07T11:26:13.287 回答