zoukankan      html  css  js  c++  java
  • ado.net access oracle dataset via store procedure

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

       1: create procedure GetAllRecords
       2: as
       3: select * from dept;

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

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

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

       1: create or replace package cust_types is
       2:   type ref_cursor is ref cursor;
       3: end cust_types;

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

       1: create or replace procedure GetDept(all_rec out cust_types.ref_cursor) is
       2: begin
       3:   open all_rec for select * from dept;
       4: end GetDept;

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

       1: var connStr = ConfigurationManager.ConnectionStrings["ora"].ConnectionString;
       2:  
       3: using (OracleConnection conn = new OracleConnection())
       4: {
       5:     conn.ConnectionString = connStr;
       6:     conn.Open();
       7:     var cmd = conn.CreateCommand();
       8:     cmd.CommandText = "GetDept";
       9:     cmd.CommandType = CommandType.StoredProcedure;
      10:     cmd.Parameters.Add(new OracleParameter("All_Rec", OracleDbType.RefCursor){Direction = ParameterDirection.Output});
      11:     var adapter = new OracleDataAdapter(cmd);
      12:     var ds = new DataSet();
      13:     adapter.Fill(ds);
      14: }
      15:  
      16:  

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

  • 相关阅读:
    【转】GitHub 中国区前 100 名到底是什么样的人?
    不同服务器数据库之间的数据操作
    行列互换
    千万级数据查询
    用命令对sql进行备份
    通过SQL Server 2008数据库复制实现数据库同步备份
    各种字符串合并处理示例.
    字符串分解
    四大排序函数
    cross apply 和 outer apply
  • 原文地址:https://www.cnblogs.com/philzhou/p/3337484.html
Copyright © 2011-2022 走看看