Hola,
Es lo mismo utilizar una funcion que un procedimiento, la diferencia es donde esperar el sys_refcursor, ya sea por retorno o por parametro de salida.
Código:
SQL> create or replace function f1 return sys_refcursor
2 is
3 q sys_refcursor;
4 begin
5 open q for select * from dual;
6 return q;
7 end;
8 /
Function created.
La idea era comentar que sys_refcursor es el tipo de dato que provee Oralce para devolver un conjunto de resultados hacia ADO.
Saludos