oracle insert into 分批提交,【PL/SQL】 分批插入 MOD方法

看完这章你会学习到以下内容:

用MOD求余方法,对即将插入的数据进行划分提交.

COMMIT的用法.

基本程序块:

For 变量 in 游标 Loop

IF MOD(SQL%ROWCOUNT,100000) = 0 THEN

COMMIT;

END IF;

COMMIT; -- 剩余100000行的数据再提交

End Loop;

某个实例,用于记录游标遍历第几行

-- 数据插入一次提交(数据量太大占用内存时间太长太大)

BEGIN

DELETE FROM EMP_SYN; -- 清空数据支持重跑

INSERT INTO EMP_SYN

SELECT * FROM EMP;

COMMIT;

END;

-- 分批提交数据

DECLARE

CURSOR C_EMP IS

SELECT * FROM EMP;

BEGIN

DELETE FROM EMP_SYN; -- 清空数据(数据量少)支持重跑

FOR T_EMP IN C_EMP LOOP

INSERT INTO EMP_SYN

SELECT *

FROM emp;

IF mod(C_EMP%ROWCOUNT,10000)=0 THEN -- 每插入1万行提交一次

COMMIT;

END IF;

COMMIT; --- 剩余不够1万行的数据都INSERT

END LOOP;

END;

ROWCOUNT使用:

SQL%ROWCOUNT 用于记录修改的条数,必须放在一个增删改等修改类语句后面执行,SQL%ROWCOUNT 之前执行的最近条语句修改数为准。

BEGIN

DELETE FROM emp;

DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT); -- 记录删除数据的条数

INSERT INTO emp(empno) VALUES (7777);

DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT); -- 记录插入数据的条数

UPDATE emp SET comm=1000 WHERE empno=7369;

DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT); -- 记录更新数据的条数

END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值