Sql 返回MERGE命令中插入的更新记录的ID

Sql 返回MERGE命令中插入的更新记录的ID,sql,sql-server,merge,Sql,Sql Server,Merge,我需要在表中插入/更新项并返回记录的ID。这是我的T-SQL: BEGIN MERGE [AgentDumps] WITH (HOLDLOCK) AS Target USING (SELECT @AgentID) AS Source (AgentID) ON (target.AgentID = source.AgentID) WHEN MATCHED THEN UPDATE Set DumpData = @DumpData,

我需要在表中插入/更新项并返回记录的ID。这是我的T-SQL:

BEGIN
   MERGE [AgentDumps] WITH (HOLDLOCK) AS Target
   USING (SELECT @AgentID) AS Source (AgentID)
   ON (target.AgentID = source.AgentID)
   WHEN MATCHED THEN
     UPDATE
       Set DumpData = @DumpData,
           UpdateTime = getdate()
   WHEN NOT MATCHED THEN
     INSERT 
       ([AgentID],
        [DumpData]
       )
     VALUES 
       (
         @AgentID,
         @DumpData
       );
    SELECT CAST(scope_identity() AS int)
  END
这仅在插入新记录时有效。但是,如果更新了现有的查询,那么查询将返回null。我试图在更新命令中添加输出INSERTED.ID:

BEGIN
   MERGE [AgentDumps] WITH (HOLDLOCK) AS Target
   USING (SELECT @AgentID) AS Source (AgentID)
   ON (target.AgentID = source.AgentID)
   WHEN MATCHED THEN
     UPDATE
       Set DumpData = @DumpData,
           UpdateTime = getdate()
           OUTPUT INSERTED.ID
   WHEN NOT MATCHED THEN
     INSERT 
       ([AgentID],
        [DumpData]
       )
     VALUES 
       (
         @AgentID,
         @DumpData
       );
    SELECT CAST(scope_identity() AS int)
  END

但是SQL返回:关键字“WHEN”附近的语法不正确。

move
output
到merge语句的末尾像个charmmove
output
到merge语句的末尾像个charm