代码之家  ›  专栏  ›  技术社区  ›  ChristianProgrammer

您能在T-SQL合并部分执行多个操作吗?

  •  1
  • ChristianProgrammer  · 技术社区  · 6 年前

    我已经相当成功地尝试了识别和巩固输出列(其中的列)以及合并语句中哪些列真正相关联的部分。我只是在问,我是否可以在一个合并条件内执行多个操作,如下例所示?

    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的示例,但是我所建议的操作可以在不使用输出结果中的另一个查询的情况下完成吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Hadi    6 年前

    在一个子句中不能有多个操作,但可以从 OUTPUT 子句执行进一步的语句。

    基于此 Microsoft Documentation :

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

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

    工具书类

        2
  •  0
  •   ChristianProgrammer    6 年前

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