我有这个带有MERGE的SQL语句。它在SQL Server Management Studio中运行时工作正常,但是当我尝试通过计划任务调用完全相同的查询并执行它时,我看到以下错误。
有人可以帮我理解发生的事情。
MERGE TEST2 AS TARGET
USING TEST1 AS SOURCE
ON TARGET.ID = SOURCE.ID
AND SOURCE.ID IS NOT NULL
WHEN MATCHED THEN
UPDATE SET ID=SOURCE.ID,
Name= SOURCE.Name,
City= SOURCE.City,
State = SOURCE.State
WHEN NOT MATCHED THEN
INSERT (ID, Name, City, State)
VALUES(SOURCE.ID, SOURCE.Name, SOURCE.City, SOURCE.State);
消息:java.sql.SQLException:必须终止MERGE语句 用分号(;)。
答案 0 :(得分:0)
如果它在SSMS中运行而不是通过具有该特定错误的应用程序意味着SQL不会得到分号。为什么会这样?运行探查器以查看应用程序发送给SQL的内容。我的猜测是你的应用程序削减了查询的尾部。例如,以下查询将生成相同的错误:
MERGE TEST2 AS TARGET
USING TEST1 AS SOURCE
ON TARGET.ID = SOURCE.ID
AND SOURCE.ID IS NOT NULL
WHEN MATCHED THEN
UPDATE SET ID=SOURC