Oracle :一次数据库连接,返回多个结果集(带参数)!

本文介绍了一个Oracle包规范及包体实现,用于统计不同电压等级下主设备的缺陷数量。通过定义存储过程GETGDJQXTJ,实现了针对500kV、220kV、110kV三个电压等级的缺陷统计,并提供了C#调用示例。

1、建立包规范

create or replace package QX_GDJTJ is

  -- Author  : liuwei
  -- Created : 2010-8-20 10:20:05
  -- Purpose : 统计主设备缺陷
 
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE GETGDJQXTJ
(
    cur_id in varchar,
    cur_GDJQXTJ1 OUT T_CURSOR,
    cur_GDJQXTJ2 OUT T_CURSOR,
    cur_GDJQXTJ3 OUT T_CURSOR
);

end QX_GDJTJ;

2、建立包体

create or replace package body QX_GDJTJ is
PROCEDURE GETGDJQXTJ
(
    cur_id in varchar,
    cur_GDJQXTJ1 OUT T_CURSOR,
    cur_GDJQXTJ2 OUT T_CURSOR,
    cur_GDJQXTJ3 OUT T_CURSOR
)
IS
BEGIN
OPEN cur_GDJQXTJ1 FOR
select (select count(0) from HVM_VIEW_QX where voltage='500kV' and gdjid=cur_id )-(select count(0) from HVM_VIEW_QX where voltage='500kV' and gdjid=cur_id and cljg like '%合格%' and cljg not like '%不合格%') from dual;
OPEN cur_GDJQXTJ2 FOR
select (select count(0) from HVM_VIEW_QX where voltage='220kV' and gdjid=cur_id )-(select count(0) from HVM_VIEW_QX where voltage='220kV' and gdjid=cur_id and cljg like '%合格%' and cljg not like '%不合格%') from dual;
OPEN cur_GDJQXTJ3 FOR
select (select count(0) from HVM_VIEW_QX where voltage='110kV' and gdjid=cur_id )-(select count(0) from HVM_VIEW_QX where voltage='110kV' and gdjid=cur_id and cljg like '%合格%' and cljg not like '%不合格%') from dual;
end GETGDJQXTJ;
end QX_GDJTJ;

3、C#调用,返回结果集

 

ExpandedBlockStart.gif代码
 1  public static DataSet GetDataSet(string gdjId, string proName, string[] cursors)
 2         {
 3             OracleConnection Conn = GetConn();
 4             DataSet ds = new DataSet();
 5             try
 6             {
 7                 OracleCommand cmd = new OracleCommand();
 8                 cmd.Connection = Conn;
 9                 cmd.CommandText = proName;
10                 cmd.CommandType = CommandType.StoredProcedure;
11                 cmd.Parameters.Add("cur_id", OracleType.VarChar).Value = gdjId;
12                 for (int i = 0; i < cursors.Length; i++)
13                 {
14                     cmd.Parameters.Add(cursors[i], OracleType.Cursor).Direction = ParameterDirection.Output;
15                 }
16                 OracleDataAdapter da = new OracleDataAdapter(cmd);
17                 da.Fill(ds);
18             }
19             catch (System.Data.OracleClient.OracleException ex)
20             {
21                 throw new Exception(ex.Message);
22             }
23             finally
24             {
25                 Conn.Close();
26             }
27             return ds;
28         }



 

转载于:https://www.cnblogs.com/gooliugle/archive/2010/08/19/Oracle.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值