- 关 键 词:
- 数据库
2.使用BULK COLLECT,不使用FORALL, 分批插入,多次提交,比较适用于大表;
| create or replace procedure cp_data5 as
type t_cur is REF cursor; c_table t_cur; type t_employee is table of employees%rowtype; v_employees t_employee; rows number := 50; v_sql varchar2(300); v_table varchar(50); begin v_table := 'employee_cp'; open c_table for select * from employees; --sour v_sql := 'insert /*+ APPEND*/ into ' || v_table || ' (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID, BIRTHDAY) values (:1, :2,:3,:4,:5,:6, :7, :8,:9,:10, :11,:12)'; loop fetch c_table bulk collect into v_employees limit rows; --分批 dbms_output.put_line(v_employees.count); for i in 1 .. v_employees.count loop execute immediate v_sql using V_EMPLOYEES(i).EMPLOYEE_ID, V_EMPLOYEES(i).FIRST_NAME, V_EMPLOYEES(i).LAST_NAME, V_EMPLOYEES(i).EMAIL, V_EMPLOYEES(i).PHONE_NUMBER, V_EMPLOYEES(i).HIRE_DATE, V_EMPLOYEES(i).JOB_ID, V_EMPLOYEES(i).SALARY, V_EMPLOYEES(i).COMMISSION_PCT, V_EMPLOYEES(i).MANAGER_ID, V_EMPLOYEES(i).DEPARTMENT_ID, V_EMPLOYEES(i).BIRTHDAY; end loop; commit; exit when c_table%notfound; end loop; close c_table; end; |
相关专题
- Oracle语句优化规则汇总(8) (71次浏览)
- Oracle数据库中关键字 (34次浏览)
- Data Guard学习物理standby高级管理 (31次浏览)
- ORACLE 10g中ASMCMD使用及ASM文件 (19次浏览)
- Oracle语句优化规则汇总(7) (18次浏览)
- 甲骨文如何解析语义谜题 (17次浏览)
- 实例讲解Oracle表碎片的具体起因及解决办法 (16次浏览)
- 实例讲解清除Oracle 10g RAC CRS的方法 (14次浏览)
- Oracle更新操作优化 (13次浏览)
- 一步一步配置Oracle Stream (12次浏览)



