为什么我会犯这个错误?必须声明标量变量错误SQL Server 2008

为什么我会犯这个错误?必须声明标量变量错误SQL Server 2008,sql,sql-server-2008,variables,Sql,Sql Server 2008,Variables,我想我正在尝试做一些相对简单的事情,但是不断得到“必须声明标量变量错误”。我有两个变量: DECLARE @CountOfThisCampaignSegment int DECLARE @CountOfLastCampaignSegment int select @CountOfThisCampaignSegment = COUNT(seg1) from #thisCampaignFinal select @CountOfLastCampaignSegment = COUNT(seg1)

我想我正在尝试做一些相对简单的事情,但是不断得到“必须声明标量变量错误”。我有两个变量:

DECLARE @CountOfThisCampaignSegment int
DECLARE @CountOfLastCampaignSegment int 

select @CountOfThisCampaignSegment = COUNT(seg1) from #thisCampaignFinal

select @CountOfLastCampaignSegment = COUNT(seg1) from #lastCampaignFinal
我在其他地方读到,我似乎需要将它们转换为nvarchar,但我需要在我的过程中比较这两个变量,以获得IF语句——所以我不确定这是否会导致问题

如果有人能给我一些关于SQL Server抛出此错误的建议和背景知识,我将不胜感激


非常感谢

我怀疑您的脚本中实际上有多个批次。在SQL Server Management Studio中,批次由
GO
语句(默认情况下)分隔

变量不会跨批持久化。例如,这给出了一个错误:

DECLARE @CountOfThisCampaignSegment int
DECLARE @CountOfLastCampaignSegment int 
select @CountOfThisCampaignSegment = COUNT(seg1) from #thisCampaignFinal
select @CountOfLastCampaignSegment = COUNT(seg1) from #lastCampaignFinal

-- other statements

GO

-- this line fails with "must declare scalar variable":
select @CountOfThisCampaignSegment, @CountOfLastCampaignSegment

你确定你的临时表还在吗?可能使用
##thisCampaignFinal
##lastCampaignFinal
代替。这是您的全部脚本吗?或许,你有任何
GO
语句吗?@David没有,请不要建议使用###全局临时表。这实际上将并发性限制为1。我可以问一下为什么我对这个问题投了反对票吗?@AaronBertrand如果并发性将成为一个问题,您可以在代码中的表名后面附加当前日期时间。没什么大不了的。非常感谢!我哪儿也不去,但我必须在这句话之后开始…这会影响它吗?通常不会。。这取决于你在做什么。您是在创建存储过程还是什么?