简体   繁体   English

如何在动态SQL查询中传递输出变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM