you cannot, not until 11g Release 1 anyway, in plsql.
You would have to use a client external from the database. Any external client like java/jdbc, C, C++, visual basic, etc - would do this the way they describe any cursor.
In 11g Release 1 and above, you have dbms_sql.
ops$tkyte%ORA11GR1> declare
2 l_rcursor sys_refcursor;
3 l_colCnt number;
4 l_descTbl dbms_sql.desc_tab;
5 begin
6 open l_rcursor for select * from all_users;
7
8 dbms_sql.describe_columns
9 ( c => dbms_sql.to_cursor_number(l_rcursor),
10 col_cnt => l_colCnt,
11 desc_t => l_descTbl );
12
13 for i in 1 .. l_colCnt
14 loop
15 dbms_output.put_line( l_descTbl(i).col_name );
16 end loop;
17 end;
18 /
USERNAME
USER_ID
CREATED
PL/SQL procedure successfully completed.
but not before.