Каков наилучший способ извлечения данных из таблицы оракула с использованием хранимых процедур odp.net и pl / sql? - PullRequest
0 голосов
/ 25 июня 2010

Мне нужно извлечь данные из оракула, используя хранимую процедуру pl / sql и odp.net. Какой стандартный способ сделать это?

1 Ответ

4 голосов
/ 25 июня 2010

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 .

...