这是无比重要的一个问题。
一般有两种方法可以访问到oracle,一种是调dotnet自带的oracleclient。一种是调用oracle官方提供的ODP.net。
两者提供的接口基本一样。关于如何在存储过程中返回结果集。上一篇文章中已找到了办法。现在稍微总结一下:
一、给要返回记录集的存储过程定义sys_refcursor类型的out参数,例如:
create or replace procedure test01(v out sys_refcursor)……
二、在存储过程体中写open v for select ................
写法就这么简单。存储过程可以写在包里面,也可以不写在包里面,有人讲:存储过程如果要返回记录集,一定要自己定义包,然后在包里面定义存储过程。本人已经作了实验,在包里、包外都可以。
在C#中怎么做呢?
一、引用
如果是oracleclient,引用System.Data.OracleClient
题外话:不知道要不要装oracleclient,配置tns。总之我是配了的。没有调过没配会怎么样。
如果是ODP.net,引用Oracle.DataAccess,还需将如下文件复制到exe的运行目录下,如果是debug模式下调试,bin/debug下。
项目引用截图如下:
二、解决了引用,那就是代码中怎么写了,截图如下:

三、上面是调存储过程,那么调oracle中的函数又是如何调的呢,有什么不同?
1.函数及上面的存储过程代码如下:

