您可以在T-SQL MERGE部分中执行更多操作吗?

时间:2019-01-22 02:29:04

标签: sql sql-server tsql merge ssis

我的尝试非常成功,我需要识别和巩固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结果中使用另一个查询的情况下完成吗?

2 个答案:

答案 0 :(得分:2)

您不能在一个子句中进行多次操作,但是可以受益于OUTPUT子句来执行进一步的语句。

基于此Microsoft Documentation

  

OUTPUT子句从受INSERT,UPDATE,DELETE或MERGE语句影响的每一行返回信息或基于表达式的信息。这些结果可以返回到处理应用程序,以用于确认消息,归档和其他此类应用程序需求。结果也可以插入到表或表变量中。另外,您可以在嵌套的INSERT,UPDATE,DELETE或MERGE语句中捕获OUTPUT子句的结果,然后将这些结果插入目标表或视图中。

以上文章包含许多可以帮助您的示例。

参考

答案 1 :(得分:0)

不... 在同一MATCHED子句中,变量不能多次更新。