相关疑难解决方法(0)

MERGE/INSERT/DELETE SQL命令中有多个OUTPUT子句?

我有一个T-SQL脚本,使用s和s中的OUTPUT子句实现一些同步逻辑.MERGEINSERT

现在我在它上面添加一个日志层,我想添加第二个OUTPUT子句将值写入报表.

我可以OUTPUT在我的MERGE陈述中添加第二个条款:

MERGE TABLE_TARGET AS T
USING TABLE_SOURCE AS S
ON (T.Code = S.Code) 
WHEN MATCHED AND T.IsDeleted = 0x0
    THEN UPDATE SET ....
WHEN NOT MATCHED BY TARGET 
    THEN INSERT ....
OUTPUT inserted.SqlId, inserted.IncId
INTO @sync_table
OUTPUT $action, inserted.Name, inserted.Code;
Run Code Online (Sandbox Code Playgroud)

这是有效的,但只要我尝试添加目标

INTO @report_table;
Run Code Online (Sandbox Code Playgroud)

我之前收到以下错误消息INTO:

A MERGE statement must be terminated by a semicolon (;)
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一个类似的问题,但它对我没有帮助,因为我要插入的字段在两个表之间不重叠,我不想修改工作同步逻辑(如果可能的话).

更新:

马丁史密斯的回答后,我有了另一个想法并重新编写了我的查询如下:

INSERT …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

18
推荐指数
3
解决办法
2万
查看次数

标签 统计

sql ×1

sql-server ×1

t-sql ×1