2012-12-14 53 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'批量分隔符。 '查詢終結符'只是需要改爲';'以避免解析錯誤。 –