必须使用SELECT语句声明标量变量

时间:2012-12-14 15:34:46

标签: sql sql-server sql-server-2008

我有以下声明:

DECLARE @Nr_Karton int;

SELECT @Nr_Karton = ISNULL(MAX(Nr), 1000)  FROM W_Karton;

SET @Nr_Karton = @Nr_Karton + 1;

INSERT INTO W_Karton (Container_ID, Nr, Beschrieb, CreationDate, Location) 
  VALUES ('1', @Nr_Karton, '', getDate(), 'Bösingen');

但我收到错误:

  

[SQL] SELECT @Nr_Karton = ISNULL(MAX(Nr),1000)FROM W_Karton

     

[Err] 42000 - [SQL Server]必须声明标量变量“@Nr_Karton”。

如何摆脱错误?

2 个答案:

答案 0 :(得分:6)

我做了一些玩这个。我创建的虚构架构是:

  

CREATE TABLE W_Karton(Container_ID int,Nr int,Beschrieb varchar(1),   CreationDate datetime,Location varchar(10))

虽然它在我的本地2008R2框中解析并运行正常,但粘贴到 SQL Fiddle 时,相同的代码无效。

但是,如果按照 SQL Fiddle 删除除最后一个之外的所有分号,您可以看到它似乎工作正常!

我认为它不应该有任何区别,但如果你愿意它有效并且不关心原因,那就试一试......

答案 1 :(得分:5)

我遇到了同样的问题。事实证明这是由于';'被选为“查询终结者”。在SQL小提琴中,这实际上意味着“批处理终止符”。右下角应该有一个下拉按钮,文本为“[;]”。单击该按钮并选择“关键字[GO]”。