2010-06-25 2 views

ответ

4

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, есть OracleRefCursor класса среди типов Oracle.DataAccess.Types. Требуется определенное количество сантехники, но отличный Марк А Уильямс написал хорошую статью по этой теме, которую вы можете найти на the OTN site.

+0

Спасибо, что именно я искал ранее. Я столкнулся с этой статьей после написания вопроса! Если бы я захотел конвертировать записи в объекты, это все равно было бы способом (преобразование объектов, как я их получаю из datareader)? – haymansfield

Смежные вопросы