oracle存储循环插入1000条数据

declare
maxnumber constant number:=10000;
i number :=1;
begin
for i in 1..maxnumber loop
   insert
  into T_JS_A01_JGWD(ID,
                     REPORTID,
                     INSID,
                     INST_CHN_NM,
                     FNCINS_ECD,
                     FNC_LCNS_NO,
                     ADIV_CD,a
                     INST_ADR,
                     INST_CRT_DT,
                     INST_EDDT,
                     RGLR_OPRG_IND,
                     BNK_BNKCD,
                     LDGR_INSID,
                     SUPR_LDGR_INSID,
                     SUPR_INSID,
                     BLNG_LV1_BR_INSID,
                     HQ_IND,
                     BNK_IDR_NO,
                     DATA_TMPNT,
                     SYNCABLE) values(i, 40287, '123456789', '333', '3333333', null, '110000', null, '20210504', '20210503', '0', null, '123456789', null, '123456789', null, '0', '3333', '20210512', null);
end loop;

dbms_output.put_line(' 成功录入数据! ');
commit;
end;
Oracle数据库中,一次插入大量数据通常不是最佳实践,因为这可能会导致性能问题,并且一次性操作可能会超出表的最大限制。如果你需要循环插入50万数据,可以采用分批次插入的方式,这样更高效也更稳定。这里是一个基本的例子,假设你需要往名为`table_name`的表中添加数据: ```sql DECLARE cursor_data CURSOR FOR SELECT ... -- 这里填写你要插入数据行(可能是固定的值或者来自另一个查询) BEGIN -- 开始循环 LOOP INSERT INTO table_name (column1, column2, ...) BULK COLLECT INTO my_collection FETCH cursor_data INTO :new_row; -- 获取下一行 EXIT WHEN %NOTFOUND; -- 当游标没有更多数据时退出循环 -- 执行批量插入,如果达到某个大小或特定件,你可以选择提交事务 IF SQL%ROWCOUNT >= 1000 OR -- 满足其他件如时间间隔等 MOD(sys_extract_utc(SYSDATE), 60) = 0 -- 每分钟一次 ) THEN COMMIT; DBMS_OUTPUT.PUT_LINE('Inserted ' || SQL%ROWCOUNT || ' rows'); SQL%_RESET; -- 重置SQL%ROWCOUNT以便于下次计数 END IF; END LOOP; END; BEGIN OPEN cursor_data; -- 如果有异常,在这里处理并关闭游标 EXCEPTION WHEN OTHERS THEN CLOSE cursor_data; ROLLBACK; RAISE; END; / ``` 请注意,这个例子假设你知道如何创建游标和定义要插入数据结构。每次循环完成后,数据存储在一个集合(`my_collection`)中,直到达到预设件才提交到数据库。实际操作中,你应该根据你的业务需求调整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_Octopus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值