Executing Data Manipulation Language (DML) statements within a PL/SQL loop is time consuming because each time through the loop a switch is made from the PL/SQL engine to the SQL engine. A better approach is to use the FORALL statement...

This story continues at
http://www.dbasupport.com/oracle/news/forall.shtml