declare
type cv is ref cursor;
outer_curs cv;
tab_name varchar2(50);
procedure open_cursor (curs_text in varchar2, inner_curs in out cv) is
begin
open inner_curs for curs_text;
end;
begin
open_cursor('select table_name from user_tables', outer_curs);
loop
fetch outer_curs into tab_name;
if outer_curs%notfound then
exit;
end if;
dbms_output.put_line(tab_name);
end loop;
close outer_curs;
end;