我有以下声明:
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”。
如何摆脱错误?
答案 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]”。