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

Pan*_*end 2 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');
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

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

[Err] 42000 - [SQL Server]必须声明标量变量"@Nr_Karton".

如何摆脱这个错误?

Bri*_*dge 6

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

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

虽然它在我的本地2008R2盒子上解析并运行良好,但是当粘贴到SQL Fiddle时,相同的代码不起作用.

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

我相信它应该没有任何区别,但如果你愿意它有效并且不关心为什么,试一试......


Jon*_*yna 5

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