You could try using `select * from table(xmlsequence( myfunc() ))` . In this case you get xml in columns. Or try this example to extract field `COL` from your refcursor `select extractvalue(COLUMN_VALUE ,'/ROW/COL') from table( xmlsequence( cursor( select 1 COL from dual union all select 2 COL from dual) ))` . Here `cursor(..)` is equivalent of refcursor function. PS. Note about xml overhead. PPS. Sorry if something wrong because this is my 1st post at this site.