我的尝试非常成功,我需要识别和巩固OUTPUT列(其中的#列)以及MERGE语句中与#of列真正相关的部分。我只是问我可以在一种合并条件下执行多个操作,如下例所示?
WHEN MATCHED
AND TARGET.ProductName <> SOURCE.ProductName
OR TARGET.Rate <> SOURCE.Rate
THEN
UPDATE SET TARGET.ProductName = SOURCE.ProductName,
TARGET.Rate = SOURCE.Rate
--MAGIC HERE ??
--CAN I ALSO
--INSERT in this same section before I do more in below condition?
WHEN NOT MATCHED BY TARGET THEN
我已经看到了通过MERGE语句的OUTPUT部分的内容完成INSERT的示例,但是我提出的建议可以在不使用OUTPUT结果中使用另一个查询的情况下完成吗?
答案 0 :(得分:2)
您不能在一个子句中进行多次操作,但是可以受益于OUTPUT
子句来执行进一步的语句。
OUTPUT子句从受INSERT,UPDATE,DELETE或MERGE语句影响的每一行返回信息或基于表达式的信息。这些结果可以返回到处理应用程序,以用于确认消息,归档和其他此类应用程序需求。结果也可以插入到表或表变量中。另外,您可以在嵌套的INSERT,UPDATE,DELETE或MERGE语句中捕获OUTPUT子句的结果,然后将这些结果插入目标表或视图中。
以上文章包含许多可以帮助您的示例。
参考
答案 1 :(得分:0)
不... 在同一MATCHED子句中,变量不能多次更新。