oracle中的等效合并输出

问题描述 投票:0回答:1

我正在学习oracle sql和pl / sql,我想知道在Oracle中是否有等效的子句'merge = output'或者是否有简单有效的方法来获得相同的结果。

链接到sql server'merge,output'语句的好解释。 qazxsw poi

link

返回(如'查询')

--sql server merge
    MERGE  #c_new AS trg
     USING #c_base AS src
        ON trg.Num_id = src.Num_id
    WHEN MATCHED )
    THEN
       UPDATE SET
          trg.Name = src.Name
         ,trg.Name_type = src.Name_type
    WHEN NOT MATCHED BY trg
    THEN
       INSERT (Num_id, Name, Name_type)
       VALUES (Num_id, src.Name, src.Name_type)
    WHEN NOT MATCHED BY src THEN DELETE
    ------------output clause from here---------------
     OUTPUT
       $ACTION,
       inserted.Name   NewName,
       deleted.Name    PrevName,
       inserted.Name_type  NewName_type,
       deleted.Name_type  PrevName_type

它是Oracle中的等效子句'merge = output'还是以简单有效的方式获得相同的结果

sql sql-server oracle plsql
1个回答
0
投票

我所知道的最接近的Oracle等价物是RETURNING子句,但MERGE语句显然不支持:

“是的,合并不支持返回[...]如果您需要此功能,请提交增强请求”

$action NewName PrevName NewName_type PrevName_type INSERT Abc1 Tp1 DELETE Abc2 Tp2 UPDATE Abc4 Abc3 Tp4 Tp3

目前的doco确实能够记录错误,但这显然不是你(或我)所追求的:-(

error_logging_clause允许您捕获受影响行的DML错误和日志列值,并将它们保存在错误记录表中。

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9528727800346317168

© www.soinside.com 2019 - 2024. All rights reserved.