2

我有以下声明:

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] 从 W_Karton 中选择 @Nr_Karton = ISNULL(MAX(Nr), 1000)

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

如何摆脱错误?

4

2 回答 2

6

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

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

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

但是,如果您按照此SQL Fiddle删除除最后一个分号之外的所有分号,您会发现它似乎工作正常!

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

于 2012-12-14T15:53:01.260 回答
5

我遇到了同样的问题。原来是因为';' 被选为“查询终结者”。在 SQL Fiddle 中,这实际上意味着“批处理终止符”。右下角应该有一个下拉按钮,其中包含文本“[;]”。单击它并选择“关键字[GO]”。

于 2014-02-12T03:28:45.407 回答