2012-11-07 73 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