declare @SQL varchar(2000)
declare @Total int
SET @SQL = 'Select'+@Total+'= SUM(isnull(Points,0)) as Pointsvalue From Offer'
exec(@SQL)
select @Total
我想这样做但总是结果显示我是空的。但是当我直接运行查询时,它会得到120的结果
我哪里错了?请让我知道
由于
王子
答案 0 :(得分: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 :(得分:1)
你想做的是(我认为)
SET @SQL = 'Select @Total = SUM(isnull(Points,0)) as Pointsvalue From Offer'
然而,这会告诉你因为@Total不在范围内(Exec中的查询有它自己的)
如果你想要上面的话,你不需要做exec ......
所以我对你想要实现的目标感到有点困惑
小费
使用exec(String)编写查询时。 注释掉exec,并用Print @SQL替换它,看看它会尝试做什么。