CURSOR cur_tbl_n_txn_wk IS
SELECT ...... ;
TYPE type_array_tnt IS TABLE OF cur_tbl_n_txn_wk%ROWTYPE INDEX BY BINARY_INTEGER;
v_tbl_n_txn_wk type_array_tnt;
--批量每次fetch数量
v_rows NUMBER := 100;
begin
OPEN cur_tbl_n_txn_wk;
LOOP
FETCH cur_tbl_n_txn_wk BULK COLLECT
INTO v_tbl_n_txn_wk LIMIT v_rows;
FORALL i IN 1 .. v_tbl_n_txn_wk.count
INSERT INTO tbl_dc_trade_water(......)
VALUES
(v_tbl_n_txn_wk(i).tdtw_id......);
COMMIT;
EXIT WHEN cur_tbl_n_txn_wk%NOTFOUND;
END LOOP;
CLOSE cur_tbl_n_txn_wk;
COMMIT;
end;
SELECT ...... ;
TYPE type_array_tnt IS TABLE OF cur_tbl_n_txn_wk%ROWTYPE INDEX BY BINARY_INTEGER;
v_tbl_n_txn_wk type_array_tnt;
--批量每次fetch数量
v_rows NUMBER := 100;
begin
OPEN cur_tbl_n_txn_wk;
LOOP
FETCH cur_tbl_n_txn_wk BULK COLLECT
INTO v_tbl_n_txn_wk LIMIT v_rows;
FORALL i IN 1 .. v_tbl_n_txn_wk.count
INSERT INTO tbl_dc_trade_water(......)
VALUES
(v_tbl_n_txn_wk(i).tdtw_id......);
COMMIT;
EXIT WHEN cur_tbl_n_txn_wk%NOTFOUND;
END LOOP;
CLOSE cur_tbl_n_txn_wk;
COMMIT;
end;
本文介绍了一种使用PL/SQL进行批量数据插入的方法。通过定义游标和类型,利用BULK COLLECT一次性获取多行数据,并结合FORALL语句实现高效的数据批量插入操作。
2486

被折叠的 条评论
为什么被折叠?



