2

是否可以在合并查询中分别插入和更新行数?

SQL%COUNT给出合并的总行数。

4

4 回答 4

0

一个解决方案可能是,每当您插入或更新一行时..您在表中插入一个代码,例如:

code=1 --> if insert
code=2 --> if update

因此,当您需要计数时,请在 where 子句中使用该条件

于 2015-03-02T14:09:24.547 回答
0

SQL%COUNT 给出合并的总行数。

sql℅rowcount为您提供受MERGE 语句影响的总行数。它不能分解INSERT/UPDATE/DELETE行数。

但是你可以通过写sql%rowcount来分解合并

于 2015-03-02T10:01:06.453 回答
0

了解之前和之后的总行数后merge,您可以在简单的算术计算中利用此信息:

                ┌───────────────┐
            ▲ ▲ │               │
            │ │ │               │
            │ │ │               │
            │ │ │               │
count_before│ │ │               │
            │ │ │               │
            │ │ │               │
            │ │ │UUUUUUUUUUUUUUU│ ▲                ▲
            │ │ │UUUUUUUUUUUUUUU│ │rows_updated    │
            ▼ │ │UUUUUUUUUUUUUUU│ ▼                │
              │ │IIIIIIIIIIIIIII│ ▲                │sql%rowcount
   count_after│ │IIIIIIIIIIIIIII│ │rows_inserted   │
              │ │IIIIIIIIIIIIIII│ │                │
              ▼ │IIIIIIIIIIIIIII│ ▼                ▼
                └───────────────┘

select count(*) into count_before from table_name;
merge into table_name ...;
rows_merged := sql%rowcount;
select count(*) into count_after from table_name;
rows_inserted := count_after - count_before;
rows_updated := rows_merged - rows_inserted;

(信用:asciiflow.com

于 2021-11-29T10:04:57.787 回答
0

添加一个 delete_count = count_before - count_after。如果 count_after 小于 count_before,将更改插入更新计数的结果。

使用合并条件单独语句计算删除的案例以了解删除了多少。sql%rowcount 可以做到这一点。

于 2022-01-21T16:04:09.877 回答