【发布时间】:2011-03-08 04:26:35
【问题描述】:
我需要使用 pl/sql 存储过程和 odp.net 从 oracle 表中检索数据。这样做的标准方法是什么?
【问题讨论】:
标签: c# oracle plsql oracle11g odp.net
我需要使用 pl/sql 存储过程和 odp.net 从 oracle 表中检索数据。这样做的标准方法是什么?
【问题讨论】:
标签: c# oracle plsql oracle11g odp.net
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 中的 in 工作方式:
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 类。需要一定数量的管道,但是优秀的 Mark A Williams 写了一篇关于这个主题的好文章,你可以在 the OTN site 找到。
【讨论】: