I am using a refcursor within a oracle function. The fucntion returns multiple rows(cursor), I woruld like to collect the values returned by the cursor into a select statement. I need to use a select to do the collection of the values returned because I use the reporting tool crystal report 8.0 . if there is any method where I can call a pl/sql block to collect the values returend by a function which can be called in crystal report I would like to know about it. My code goes as follows.

create or replace package util as
type cursorType is ref cursor;
end;
/
create or replace function cal_rowise_util(fdt in varchar2,
tdt in varchar2,
lno in prod_line_diemast_t.line_no%type)
return util.cursortype as l_cursor util.cursorType;
begin
open l_cursor for select (nvl(nvl(a.prob_qty_ok,0) * c.cycle_time_cutting,0)/3600)
/cal_avail_hrs(fdt,tdt,lno) util,
a.prod_date,
a.shift_no
from prod_hotinsp_dt a,
prod_hotinsp_hd b,
prod_line_diemast_t c
where a.line_no = b.line_no
and b.line_no = c.line_no
and a.shift_no = b.shift_no
and a.prod_date = b.prod_date
and a.die_no = c.die_no
and a.line_no = lno
and a.prod_date >= fdt
and a.prod_date <= decode(a.shift_no, 3, to_char(to_date(tdt) + 1,'DD-MON-YYYY'),
to_char(to_date(tdt),'DD-MON-YYYY'));
return l_cursor;
end;
/

and I execute the function like this,
variable c refcursor;
exec :c:= cal_rowise_util('02-JAN-1999','02-JAN-1999','PZS 900');
print c;

and I get a set of values like this

UTIL PROD_DATE SHIFT_NO
--------- --------- ---------
.14322917 02-JAN-99 1
.05983796 02-JAN-99 1
.12731481 02-JAN-99 2
.00954861 03-JAN-99 3
.06365741 02-JAN-99 2

These are a set of values I would like to display in a select in
a crystal report, since I have other fucntions to return other values too, to be called in a same select statement.