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:  

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

  • 相关阅读:
    Ubuntu20.04 安装AMD显卡驱动
    Ubuntu IBus RIME 输入法 配置小鹤双拼
    python time常用转换
    Linux 目录软链接
    MarkDown 插入图片 && Picture To Base64
    Bitmap 简介
    Linux 使用命令发送邮件
    Linux分区
    PyQt graphicsView自适应显示图像
    Python 图片转视频
  • 原文地址:https://www.cnblogs.com/philzhou/p/3337484.html
Copyright © 2011-2022 走看看