c# 获得 oracle输出游标


1. 定义ORACLE 带输出游标的存储过程, 输出游标定义类型为:sys_refcursor

 1  CREATE  OR  REPLACE  PROCEDURE sp_demo (
 2    emp_no        IN        VARCHAR2,
 3    o_res1       OUT       VARCHAR2,
 4    o_res2       OUT       VARCHAR2,
 5    o_ds1        OUT      sys_refcursor,
 6    o_ds2        OUT      sys_refcursor
 7 )
 8  IS
 9    v_count    NUMBER;
10  BEGIN
11     OPEN o_ds1  FOR
12        SELECT  *
13          FROM table1;
14 
15     OPEN o_ds2  FOR
16        SELECT  *
17          FROM table2;
18 
19    o_res1 : =  ' ok ';
20    o_res2 : = TO_CHAR (SYSDATE,  ' yyyy/mm/dd hh24:mi:ss ');
21     RETURN;
22  END;

 

2. C#调用

  参数准备(petshop)


 1  private  static  void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans,
 2             CommandType cmdType,  string cmdText, OracleParameter[] commandParameters)
 3         {
 4              if (conn.State != ConnectionState.Open)
 5                 conn.Open();
 6 
 7             cmd.Connection = conn;
 8             cmd.CommandText = cmdText;
 9             cmd.CommandType = cmdType;
10 
11              if (trans !=  null)
12                 cmd.Transaction = trans;
13 
14              if (commandParameters !=  null)
15             {
16                  foreach (OracleParameter parm  in commandParameters)
17                     cmd.Parameters.Add(parm);
18             }
19         }

 

 

// 准备参数
PrepareCommand(cmd, conn,  null, cmdType, cmdText, commandParameters);
// 获得所有输出游标,每个游标输出到ds的一个表中
OracleDataAdapter oda =  new OracleDataAdapter(cmd);
                DataSet ds =  new DataSet();
                oda.Fill(ds);

// 只获得第一个数据游标
OracleDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
dt.Load(rdr);
                rdr.Close();

转载于:https://www.cnblogs.com/baishahe/archive/2012/05/17/2505835.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值