使用存储过程返回结果集,并绑定到ado.net对象中在sql server里面是非常直观的。

  1. 1: create procedure GetAllRecords

  1. 2: as

  1. 3: select * from dept;

存储过程返回一个结果集,然后通过SqlDataAdapter绑定给DataSet。

但是在Oracle里面返回结果集存储过程是不可以这样写的,返回的结果集要通过游标来完成的。

首先创建一个包,新建一个应用游标类型

  1. 1: create or replace package cust_types is

  1. 2: type ref_cursor is ref cursor;

  1. 3: end cust_types;

然后再使用该类型声明一个返回参数

  1. 1: create or replace procedure GetDept(all_rec out cust_types.ref_cursor) is

  1. 2: begin

  1. 3: open all_rec for select * from dept;

  1. 4: end GetDept;

在.net中调用是要这样写:

  1. 1: var connStr = ConfigurationManager.ConnectionStrings["ora"].ConnectionString;

  1. 2: 

  1. 3: using (OracleConnection conn = new OracleConnection())

  1. 4: {

  1. 5: conn.ConnectionString = connStr;

  1. 6: conn.Open();

  1. 7: var cmd = conn.CreateCommand();

  1. 8: cmd.CommandText = "GetDept";

  1. 9: cmd.CommandType = CommandType.StoredProcedure;

  1. 10: cmd.Parameters.Add(new OracleParameter("All_Rec", OracleDbType.RefCursor){Direction = ParameterDirection.Output});

  1. 11: var adapter = new OracleDataAdapter(cmd);

  1. 12: var ds = new DataSet();

  1. 13: adapter.Fill(ds);

  1. 14: }

  1. 15: 

  1. 16: 

这样才能使用存储过程返回结果集。

ado.net access oracle dataset via store procedure的更多相关文章

  1. [转]使用ADO.NET访问Oracle存储过程

    本文转自:http://www.cnblogs.com/datasky/archive/2007/11/07/952141.html 本文讨论了如何使用 ADO.NET 访问 Oracle 存储过程( ...

  2. ado.net 之 oracle 数据库

    ado.net 操作oracle 数据库 跟操作mssql 的原来基本一样.只是使用不同的命名空间而已.下面举几个例子: 一. C#读取oracle数据库的表格 ///ado.net 读取table ...

  3. 关于ADO.NET连接ORACLE,使用ODAC连接中的一些问题

    ADO.NET连接ORACLE时,用到ODAC组件时,有几点注意的. 1.安装的具体方法见:http://jingyan.baidu.com/article/e4511cf336ce872b845ea ...

  4. Ways to access Oracle Database in PostgreSQL

    Today, organizations stores information(data) in different database systems. Each database system ha ...

  5. ADO访问Access数据库错误解决心得随笔

    最近在用ADO访问Access数据库的时候出现了一个奇怪的错误,觉得有必要记录下来,和大家分享一下. 环境 win7 x86系统: VS2012编译器: Office2010: Access2000~ ...

  6. oracle的function和procedure返回值给shell

    本文演示两个关于如何在shell中调用oracle的function和procedure,并将返回值返回给shell. 1.首在package中创建function和procedure,脚本如下: G ...

  7. store procedure 翻页

    store procedure 翻页例子 .turn page CREATE PROCEDURE pageTest --用于翻页的测试 --需要把排序字段放在第一列 ( )=null, --当前页面里 ...

  8. ADO.NET与Oracle(一):获取多行记录集

    近期接触ADO.NET和Oracle.将我寻常遇到的一些问题和大家共享. 我认为要想入门ADO.NET操作Oracle,最主要的要求就是要会通过ADO.NET更新Oracle中的数据. 该文简单讲些利 ...

  9. c# ADO连接Access 执行Open后程序自动退出

    今天利用ADO连接Access数据库的时候遇到了前所未见的问题,Access数据库连接串,OleDbConnection,open的时候,系统就会自动关闭所有调试. 我就很纠结了,这个AccessHe ...

随机推荐

  1. CentOS 基本设置

    CentOS 基本设置 1.更改163源 在使用yum的时候,可能yum被锁,可用如下命令解锁:rm -rf /var/run/yum.id 2.编译安装开源软件 安装自己编译的开源软件一般都会在/u ...

  2. PAT (Basic Level) Practise:1038. 统计同成绩学生

    [题目链接] 本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出. 输入格式: 输入在第1行给出不超过105的正整数N,即学生总人数.随后1行给出N名学生的百分制整数成绩,中间以空格分隔.最 ...

  3. python import eventlet包时提示ImportError: cannot import name eventlet

    root@zte-desktop:/home/ubuntu/python-threads# cat eventlet.py #!/usr/bin python import eventlet from ...

  4. HDU 2717 Catch That Cow (bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2717 Catch That Cow Time Limit: 5000/2000 MS (Java/Ot ...

  5. svn服务器迁移(生成dump)

    首先介绍一下dump文件 一定要进入VisualSVN服务端的安装目录里的bin目录下面,然后再执行svnadmin  相关命令. 不然会出现下图中的“svnadmin不是内部命令或外部命令,也不是可 ...

  6. 开启software protection报错

    错误:             我把激活Win8的拿去激活7了 ,开了oem/efi后就ID不可用.开启software protection开不了,错误2.找不到指定文件.用其他软件重新激活则是弹出 ...

  7. pelican-python install

    参考: http://www.cnblogs.com/ballwql/p/pelican.html 写的原因是,我的安装环境与原作者的安装过程有不一样的地方,所有总结一下. 本文将从以下几个方面进行描 ...

  8. nginx相关配置说明

    基础: nginx配置文件主要分为六个区域:main section.events section.http section.sever section. location section.upstr ...

  9. CentOS 7 php留言本网站的搭建

    一如既往的先搭建yum仓库 并且安装httpd服务 yum install httpd -y 1:改网页的搭建是基于html搭建 查询是否安装该协议 rpm -qa |grep httpd 2:留言板 ...

  10. javascript内建对象

    内建对象等价于内建构造器内建对象大致分为三类:数据封装类对象--Object.Array.Boolean.Number和String工具类对象--Math.Date.RegExp等用于提供遍历的对象错 ...