如何在 oracle 19c 的 MERGE 语句中使用 commit?

How to use commit in MERGE statement in oracle 19c?

是否可以在oracle 19c中使用MERGE语法中的commit语句?我想在每 1000 次更新和每 1000 次插入之后执行一次提交,如何实现?

MERGE INTO target_table 
USING source_table 
ON search_condition
    WHEN MATCHED THEN
        UPDATE SET col1 = value1, col2 = value2,...
        WHERE <update_condition>
        [DELETE WHERE <delete_condition>]
    WHEN NOT MATCHED THEN
        INSERT (col1,col2,...)
        values(value1,value2,...)
        WHERE <insert_condition>;

如果上述不可能,那么您通常如何找到 1000 行是否 inserted/updated 并相应地执行提交?

你不能,不能在 MERGE 内。当一切都完成时提交一次。

此外,您为什么要频繁提交?您期望得到什么好处?

如果必须如您所述,使用循环并在 1000 行的 中执行,然后提交。当您在循环中频繁提交时,请注意 可能(或可能不会)发生的 ORA-01555。