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:  

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

  • 相关阅读:
    smarty
    js进阶
    JS 基础
    php之面向对象(2)
    php之面向对象(1)
    PHP之图形处理
    PHP代码分离
    PHP文件上传与安全
    PHP substr截取中文字符出现乱码的问题解疑
    关于学习方法
  • 原文地址:https://www.cnblogs.com/philzhou/p/3337484.html
Copyright © 2011-2022 走看看