SQL> desc test1 Name Null? Type ----------------------------------------- -------- ---------------------------- C1 VARCHAR2(2) C2 NUMBER(1) SUMC2 NUMBER(5) SQL> create or replace type test1_typ as object (c1 varchar2(2), c2 number(1), sumc2 number(5)); 2 / Type created. SQL> set serveroutput on SQL> declare 2 type tab_test1 is table of test1_typ; 3 x tab_test1; 4 begin 5 select test1_typ(c1,c2,sumc2) bulk collect into x from test1; 6 dbms_output.put_line('Total rows loaded='||x.count); 7 for i in 1..5 loop 8 dbms_output.put_line('x('||i||').c1='||x(i).c1||' x('||i||').c2='||x(i).c2); 9 end loop; 10 end; 11 / Total rows loaded=25 x(1).c1=a x(1).c2=1 x(2).c1=b x(2).c2=2 x(3).c1=a x(3).c2=1 x(4).c1=a x(4).c2=2 x(5).c1=c x(5).c2=1 PL/SQL procedure successfully completed. SQL>