问题:我在我的数据库中有表ARMS.RefRollno,现在有滚动否和排名我有查询返回滚动和排名的数据集。如果我的表包含该行,那么我需要更新它,如果不是我想插入一个关于该卷号的新行。
create table #temp
(
ROLLNO varchar(100),
Ranking varchar(100),
TestRecID varchar(100)
)
INSERT INTO #temp (ROLLNO, Ranking,TestRecID) EXEC [ARMS].[GetStudentResultForUpdateRank] '412'
MERGE ARMS.RefRollno AS C
USING #temp AS CT
ON C.TestRecID = CT.TestRecID
WHEN MATCHED THEN
UPDATE SET
C.RefRank = CT.Ranking
WHEN NOT MATCHED THEN
INSERT (TestRecId,RefRollNo, RefRank,IsActive,CreatedDate)
VALUES (CT.TestRecID,CT.ROLLNO,CT.Ranking, 1,getdate());
drop table #temp
这里ARMS.RefRollno是我在数据库中的现有表。 任何帮助表示赞赏。
** Error by Sql Server:Incorrect syntax near 'MERGE'.**
答案 0 :(得分:1)
更改
EXEC [ARMS].[GetStudentResultForUpdateRank] '412'
要
EXEC [ARMS].[GetStudentResultForUpdateRank] '412';
(注意添加后面的分号)。
如果数据库处于早于2008的兼容模式,这似乎是必要的。