使用场景:需要根据已有表快速复制测试表或迁移表,代替insert into … from select …的场景。
SET SERVEROUTPUT ON
DECLARE
loop_count number:=1;
CURSOR course_cur
IS
/* 原表查询SQL */
SELECT * FROM t_1;
TYPE rec IS TABLE OF sysdba.t_1%ROWTYPE;
cur_result rec;
BEGIN
OPEN course_cur;
WHILE (TRUE) LOOP
/* 限制每次查询提交条数 */
FETCH course_cur BULK COLLECT INTO cur_result LIMIT 10;
FOR i IN 1 .. cur_result.COUNT LOOP
/* 批量循环INSERT,自行修改 */
insert into t_2(c1) values(cur_result(i).c1);
END LOOP;
COMMIT;
DBMS_OUTPUT.PUT_LINE(now(3)||' Cycle-Index: '||loop_count);
loop_count:=loop_count+1;
EXIT WHEN course_cur%NOTFOUND;
END LOOP;
CLOSE course_cur;
DBMS_OUTPUT.PUT_LINE('Complete !');
END;
/
文章
阅读量
获赞