SQL> SQL> -- Currently, 9.2.0.1, there does not seem to be an easy way SQL> -- to append one collection to another SQL> SQL> select * from test2; C1 C2 -- ---------- b 2 c 3 e 1 K 6 P 0 G 0 ap 9 u 7 8 rows selected. SQL> select * from test3; C1 C2 -- ---------- b 2 c 3 e 4 f 5 o 9 p 1 6 rows selected. SQL> create or replace view t_vw as select * from test2 union all select * from test3; View created. SQL> SQL> -- No problem BULK COLLECTing from a view SQL> set serveroutput on SQL> declare 2 type x is table of test2%rowtype; 3 y x; 4 begin 5 select * bulk collect into y from t_vw; 6 dbms_output.put_line('rows loaded: '||y.count); 7 end; 8 / rows loaded: 14 PL/SQL procedure successfully completed. SQL> SQL> -- BULK COLLECT from one collection to another SQL> -- Note that this is just a test to see if it works. SQL> -- The easier way is to just 'assign' the whole collection, like SQL> -- w:=x; SQL> declare 2 x num_tab_type; 3 cursor num_cur is select t1.column_value from table(x) t1; 4 w num_tab_type; 5 begin 6 select c2 bulk collect into x from test2; 7 open num_cur; 8 fetch num_cur BULK COLLECT into w; 9 close num_cur; 10 dbms_output.put_line('Rows loaded: '||w.count); 11 end; 12 / Rows loaded: 8 PL/SQL procedure successfully completed. SQL> SQL> -- Error occurrs as soon as opening of the UNION ALL cursor is attempted. SQL> declare 2 x num_tab_type; 3 y num_tab_type; 4 cursor num_cur is select * from table(x) union all 5 select * from table(y); 6 w num_tab_type; 7 begin 8 select c2 bulk collect into x from test2; 9 select c2 bulk collect into y from test3; 10 open num_cur; 11 fetch num_cur BULK COLLECT into w; 12 close num_cur; 13 dbms_output.put_line('Rows loaded: '||w.count); 14 end; 15 / declare * ERROR at line 1: ORA-22905: cannot access rows from a non-nested table item ORA-06512: at line 4 ORA-06512: at line 10 SQL> SQL> -- Error occurrs as soon as opening of the UNION ALL cursor is attempted. SQL> declare 2 x num_tab_type; 3 y num_tab_type; 4 cursor num_cur is select t1.column_value from table(x) t1 union all 5 select t2.column_value from table(y) t2; 6 w num_tab_type; 7 begin 8 select c2 bulk collect into x from test2; 9 select c2 bulk collect into y from test3; 10 open num_cur; 11 fetch num_cur BULK COLLECT into w; 12 close num_cur; 13 dbms_output.put_line('Rows loaded: '||w.count); 14 end; 15 / declare * ERROR at line 1: ORA-22905: cannot access rows from a non-nested table item ORA-06512: at line 4 ORA-06512: at line 10 SQL> SQL> declare 2 x num_tab_type; 3 y num_tab_type; 4 cursor num_cur is select t1.column_value c1 from table(x) t1 union all 5 select t2.column_value c1 from table(y) t2; 6 w num_tab_type:=num_tab_type(); 7 i number:=0; 8 begin 9 select c2 bulk collect into x from test2; 10 select c2 bulk collect into y from test3; 11 for rec in num_cur loop 12 i:= i+1; 13 w.extend; 14 -- w(i):=rec.c1; 15 end loop; 16 dbms_output.put_line('Rows loaded: '||w.count); 17 end; 18 / declare * ERROR at line 1: ORA-22905: cannot access rows from a non-nested table item ORA-06512: at line 4 ORA-06512: at line 11 SQL> SQL> drop view t_vw; View dropped. SQL> SQL> spool off