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