我有一个T-SQL
脚本,使用s和s中的OUTPUT
子句实现一些同步逻辑.MERGE
INSERT
现在我在它上面添加一个日志层,我想添加第二个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)