2012-01-20 89 views
0
declare @SQL varchar(2000) 
declare @Total int 

SET @SQL = 'Select'[email protected]+'= SUM(isnull(Points,0)) as Pointsvalue From Offer' 

exec(@SQL) 

select @Total 

我想這樣做,但總是結果顯示我爲空。但是當我直接運行查詢時,結果爲120動態查詢不能與變量一起工作

我在哪裏出錯了?請讓我知道

感謝

王子

+4

爲什麼這需要成爲一個動態查詢? – msmucker0527

回答

5

如果你想運行這是一個動態查詢,嘗試這樣的:

declare @SQL nvarchar(2000), @Total int 

SET @SQL = N'Select @Total = SUM(isnull(Points,0)) as Pointsvalue From Offer' 
exec sp_executesql @SQL, N'@Total int output', @Total = @Total output 

select @Total 

(見sp_executesql (Transact-SQL)

然而,它看起來像你沒有真正動態的查詢。
所以,msmucker0527指出,你可以簡單地運行:

declare @Total int 

Select @Total = SUM(isnull(Points,0)) as Pointsvalue From Offer 

select @Total 
1

什麼你想要做的是(我認爲)

SET @SQL = 'Select @Total = SUM(isnull(Points,0)) as Pointsvalue From Offer' 

然而,將告訴你了,因爲@Total不範圍(在Exec的查詢都有它自己)

有一次你不需要,如果你想在上面做高管......

所以我是位C onfused什麼你想達到

小費

當你寫一個使用查詢EXEC(字符串)。 註釋掉exec,並用Print @SQL替換它,看看它會嘗試做什麼。

相關問題