我正在学习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'还是以简单有效的方式获得相同的结果
我所知道的最接近的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