PL / SQL имеет возможность возвращать наборы данных, используя Ref Cursors, которые в основном являются указателями. Вот простая функция, которая возвращает подмножество сотрудников в зависимости от отдела:
SQL> create or replace function get_emps_by_dept (dno number)
2 return sys_refcursor
3 is
4 rc sys_refcursor;
5 begin
6 open rc for select * from emp where deptno = dno;
7 return rc;
8 end;
9 /
Function created.
SQL>
Вот как работает SQL * Plus:
SQL> var rc refcursor
SQL> exec :rc := get_emps_by_dept(50)
PL/SQL procedure successfully completed.
SQL> print rc
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- --------- ---------- ---------- ----------
8085 TRICHLER PLUMBER 8061 08-APR-10 3500 50
8060 VERREYNNE PLUMBER 8061 08-APR-08 4000 50
8061 FEUERSTEIN PLUMBER 7839 27-FEB-10 4500 50
8100 PODER PLUMBER 8061 3750 50
SQL>
Что касается .Net, то среди типов Oracle.DataAccess.Types есть класс OracleRefCursor
. Требуется определенное количество сантехники, но отличный Марк Уильямс написал хорошую статью на эту тему, которую вы можете найти на сайте OTN .