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:  

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

  • 相关阅读:
    LUA表的引用理解
    UNITY 打包安卓APK
    UNITY打包问题
    U3D 打包时找不到tag的问题
    break prefab instance的原理
    C#调用LUA函数
    LUA 利用#遍历表的问题
    U3D笔记11:47 2016/11/30-15:15 2016/12/19
    Unity3D 预设打包的注意事项
    回调 和 覆盖
  • 原文地址:https://www.cnblogs.com/philzhou/p/3337484.html
Copyright © 2011-2022 走看看