2012-12-14 56 views
2

我已经在这个小提琴中完成了我所有关于MERGE的知识,但没有得到输出。希望有人会为此提出解决方案。MERGE语句问题 - 分号错误(SQL Server 2008)

我做了一个简单的MERGE语句插入,更新和使用源表在同一时间删除目标表的价值,一切都很好,但我收到错误消息说

Error - A MERGE statement must be terminated by a semi-colon (;)

我有把分号,但错误不断弹出up.I正在研究MERGE语句,以及如何使用SQLFiddle使用两个表和某人请告诉我正确的方法来放置分号。

这里的小提琴 - SQLFiddle

这里的合并的代码

MERGE Students AS T 

USING Teachers AS S 
ON S.LastName = T. LastName and 
S.FirstName = T.FirstName 

WHEN MATCHED THEN 
UPDATE SET T.Address = S.Address, 
     T.Age = S.Age 

WHEN NOT MATCHED THEN 
INSERT (LastName, 
     FirstName, 
     Address, 
     Age) 
     VALUES (S.LastName, 
     S.FirstName, 
     S.Address, 
     S.Age) 

WHEN NOT MATCHED BY SOURCE THEN 
DELETE; 

OUTPUT $action, Inserted.LastName, Inserted.FirstName, Deleted.LastName, Deleted.FirstName INTO @T; 

Select * from @T; 

回答

1

DELETE后试试这个SQL Fiddle@T定义错了,我也删除分号,改变了查询终止对SQL小提到GO而不是分号。

+0

谢谢..我应该添加那个动作列,但没有这样想..现在我知道了..谢谢..但我有一个疑问,虽然在这个SQl小提琴中,冒号终止每一行然后为什么改变它去?我们正在使用它吗? –

+0

不客气,我很乐意提供帮助。实际上,我发布的小工具与分号以外的任何“查询终止符”一起工作。不幸的是,我不能说为什么选择这个选项似乎会干扰查询解析。在这个小提琴中,我们实际上并没有使用'GO'批量分隔符。 '查询终结符'只是需要改为';'以避免解析错误。 –