[英]How to pass an output variable in dynamic sql query
I was reviewing a stored procedure where I found piece of code below. 我正在查看一个存储过程,在其中找到了以下代码。 Looking at the code, my perception is that we are creating a variable named @QuestionInclude and passing its value in dynamic sql statement.
看代码,我的感觉是我们正在创建一个名为@QuestionInclude的变量,并将其值传递到动态sql语句中。 But how this code is working?
但是这段代码是如何工作的?
This is something strage and new to me. 这对我来说是新事物。
declare @QuestionInclude varchar(10)
select @sqln = 'select @QuestionInclude = 1 from ##Stg_Prelim'
exec sp_executesql @sqln,N'@QuestionInclude varchar(10) output',@QuestionInclude output
may be this will help you 也许这会帮助你
http://msdn.microsoft.com/en-us/library/ms188001.aspx http://msdn.microsoft.com/en-us/library/ms188001.aspx
procedure sp_executesql
have parameters @stmt
, which is actual statement to run, @params
- declaration of parameters, and then all parameters declared in @params
过程
sp_executesql
具有参数@stmt
,这是要运行的实际语句, @params
参数的声明,然后在@params
声明的所有参数
It's also better to pass parameters by names 最好按名称传递参数
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.