System Packages Oracle PLSQL Tutorial

SQL>
SQL> create table t1 as select * from dba_objects where 0=1;
Table created.
SQL> create table t2 as select * from dba_objects where 0=1;
Table created.
SQL>
SQL> create or replace procedure row_at_a_time_test
  2  as
  3  begin
  4      dbms_profiler.start_profiler('row test');
  5      for x in ( select * from all_objects )
  6      loop
  7          insert into t1 values X;
  8      end loop;
  9      dbms_profiler.stop_profiler;
 10  end;
 11  /
Procedure created.
SQL> show errors
No errors.
SQL>
SQL> create or replace procedure bulk_test
  2  as
  3    type array is table of all_objects%rowtype;
  4    l_data array;
  5    cursor c is select * from all_objects;
  6  begin
  7    dbms_profiler.start_profiler('bulk test');
  8    open c;
  9    loop
 10       fetch c bulk collect into l_data LIMIT 100;
 11
 12       forall i in 1 .. l_data.count
 13           insert into t2 values l_data(i);
 14
 15       exit when c%notfound;
 16    end loop;
 17    dbms_profiler.stop_profiler;
 18  end;
 19  /
Procedure created.
SQL> show errors
No errors.
SQL>
SQL> drop table t1;
Table dropped.
SQL> drop table t2;
Table dropped.
SQL>