SET serveroutput ON
DECLARE
-- Declare the PL/SQL table
TYPE deptarr IS TABLE OF dept%ROWTYPE
INDEX BY BINARY_INTEGER;
d_arr deptarr;
-- Declare cursor
TYPE d_cur IS REF CURSOR RETURN dept%ROWTYPE;
c1 d_cur;
i NUMBER := 1;
BEGIN
-- Populate the PL/SQL table from the cursor
OPEN c1 FOR SELECT * FROM dept;
LOOP
EXIT WHEN c1%NOTFOUND;
FETCH c1 INTO d_arr(i);
i := i+1;
END LOOP;
CLOSE c1;
-- Display the entire PL/SQL table on screen
FOR i IN 1..d_arr.LAST LOOP
DBMS_OUTPUT.put_line('DEPTNO : '||d_arr(i).deptno );
DBMS_OUTPUT.put_line('DNAME : '||d_arr(i).dname );
DBMS_OUTPUT.put_line('LOC : '||d_arr(i).loc );
DBMS_OUTPUT.put_line('---------------------------');
END LOOP;
END;
/
Fonte: http://psoug.org/snippet/Populate-table-from-cursor_535.htm