动态查询不与变量一起使用

hap*_*ile 0 sql-server-2008

declare  @SQL  varchar(2000)
declare @Total int 

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

exec(@SQL)  

select @Total
Run Code Online (Sandbox Code Playgroud)

我想这样做但总是结果显示我是空的.但是当我直接运行查询时,它会得到120的结果

我哪里错了?请告诉我

谢谢

王子

Cri*_*scu 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
Run Code Online (Sandbox Code Playgroud)

(请参阅sp_executesql(Transact-SQL))

但是,看起来你没有真正的动态查询.
所以,正如msmucker0527所指出的,你可以简单地运行:

declare @Total int 

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

select @Total
Run Code Online (Sandbox Code Playgroud)