Accidentally got posted.....in half way through my question...

I would like to know how can I use bulk collect or table(cast) in the procedure to fine tune it...

The parameter table_emp_proj is defined as follow

create or replace type emp_type as object(empno number(20), proj_id number(20), proj_name varchar2(40), location varchar2(40));

create or replace type table_emp_proj as AS TABLE OF emp_type;

I want to avoid the loop and use either bulk collect or for all option.