PROCEDURE my_proc(x_ref_cursor OUT sys_refcursor) IS TYPE my_array_type IS TABLE of MY_TABLE%ROWTYPE; my_array my_array_type; BEGIN OPEN x_ref_cursor FOR SELECT * FROM MY_TABLE; FETCH x_ref_cursor BULK COLLECT INTO my_array; -- Do something with my_array... FORALL i IN 1 .. my_array.COUNT INSERT INTO MY_TABLE2 ( col1, col2, col3) VALUES ( my_array(i).col1, my_array(i).col2, my_array(i).col3 ); END;