Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset

public DataSet Get_TRAFeeQinfenStatus(int type, string BargainOrderCode, string ParkUserId, string BerthCode)
        { 

            OracleParameter[] parms = {
                                        new OracleParameter("VRETURN_LIST1", OracleType.Cursor),
                                        new OracleParameter("VRETURN_LIST2", OracleType.Cursor),
                                        new OracleParameter("VRETURN_LIST3", OracleType.Cursor),
                                        new OracleParameter("Vtype", OracleType.Number),
                                        new OracleParameter("VBargainOrderCode", OracleType.VarChar),
                                        new OracleParameter("VParkUserId", OracleType.VarChar),
                                        new OracleParameter("VBerthCode", OracleType.VarChar)

                                     };
            parms[0].Direction = ParameterDirection.Output;
            parms[1].Direction = ParameterDirection.Output;
            parms[2].Direction = ParameterDirection.Output;
            parms[3].Value = type;
            parms[4].Value = BargainOrderCode;
            parms[5].Value = ParkUserId;
            parms[6].Value = BerthCode;

            DataSet ds = OracleHelper.ExecuteDataset(CommandType.StoredProcedure, string.Format("{0}.GET_TRAFEEQINFENSTATUS", CADRE_SZRPP_PK), parms);
            return ds;

        }

oracle存储过程实现:

PROCEDURE GET_TRAFEEQINFENSTATUS
    (

      VRETURN_LIST1 OUT OUTPUTLIST,--查退费单
      VRETURN_LIST2 OUT OUTPUTLIST,--查欠费单
      VRETURN_LIST3 OUT OUTPUTLIST,--缴费记录
      VTYPE IN INTEGER DEFAULT NULL,
      VBARGAINORDERCODE IN TRA_ORDERPAYMENTINFO.BARGAINORDERCODE%TYPE DEFAULT NULL,
      VPARKUSERID IN TRA_ORDERPAYMENTINFO.PARKUSERID%TYPE DEFAULT NULL,
      VBERTHCODE IN TRA_ORDERPAYMENTINFO.BERTHCODE%TYPE DEFAULT NULL
    )
     IS
     VTYPENUMBER  INTEGER;
     VPAYSTATUS   NVARCHAR2(4000);
     VARREARSSTATUS NVARCHAR2(4000);
     VREFUNDSTATUS  NVARCHAR2(4000);

    BEGIN
      SELECT  VTYPE INTO VTYPENUMBER FROM DUAL;

     IF (VTYPENUMBER=2)
        THEN      

    OPEN VRETURN_LIST1  FOR
    SELECT REFUNDSTATUS,PAYSTATUS FROM  TRA_REFUNDORDER  WHERE BARGAINORDERCODE=VBARGAINORDERCODE
       AND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE;

    --解决: ORA-24338: 未执行语句句柄  一定要进行对游标输出参数值赋值
      ELSE  OPEN VRETURN_LIST1 FOR SELECT VREFUNDSTATUS AS REFUNDSTATUS,VPAYSTATUS AS PAYSTATUS  FROM DUAL;

     END IF;

      IF (VTYPENUMBER=3 )
         THEN

       OPEN VRETURN_LIST2  FOR
        SELECT ARREARSSTATUS FROM  TRA_ARREARSORDER WHERE BARGAINORDERCODE=VBARGAINORDERCODE
       AND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE;

     ELSE   OPEN VRETURN_LIST2 FOR SELECT VARREARSSTATUS AS ARREARSSTATUS  FROM DUAL;

      END IF;

      IF (VTYPENUMBER=5 )

          THEN

       OPEN VRETURN_LIST3  FOR
       SELECT PAYSTATUS FROM TRA_ORDERPAYMENTINFO WHERE BARGAINORDERCODE=VBARGAINORDERCODE
       AND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE;     

      ELSE   OPEN VRETURN_LIST3 FOR SELECT VPAYSTATUS AS PAYSTATUS  FROM DUAL;

      END IF;
      END;
时间: 2024-08-28 18:50:58

Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset的相关文章

ibatis.net调用oracle存储过返回游标SYS_REFCURSOR结果集

最近在用ibatis.net框架和oracle 11g开发一套程序.其中有一个需求就是通过存储过程,查询指定条件的数据集. 但是在开发的过程中遇到了问题,问题如下: 1.如何通过ibatis.net执行存储过程? 2.通过ibatis.net执行存储过程时,如何传参数? 3.通过ibatis.net执行存储过程时,传递参数过程中,dbType和type是如何对应的? 4.oracle存储过程中返回的游标集合SYS_REFCURSOR对应dbType是什么? 5.通过ibatis.net执行存储过

C# 获取 oracle 存储过程的 返回值1

/// <summary> /// 返回对应表的模拟自增字段值 /// </summary> /// <param name="tablename">表名</param> /// <returns>表的模拟自增字段值</returns> public decimal GetPKNum(string tablename) { switch (sqlType) { case "MSSQL2008":

mybatis springmvc调用oracle存储过程,返回记录集

参考: http://bbs.csdn.net/topics/390866155 辅助参考: http://www.2cto.com/kf/201307/226848.html http://blog.csdn.net/grhlove123/article/details/7549290 在smm中,这样的controller编写方式是不一样的: 存储过程: create or replace procedure pro_getchart(chart_cur out sys_refcursor)

Oracle 存储过程调用返回游标的另一个存储过程。

一个扩展存储过程调用另一个存储过程,示例: 被调用存储过程:最后会返回一个游标,游标返回一个值.调用这个存储过程的存储过程同样需要获取它. procedure SearchBill --根据到货单号查询所有行号 ( P_code VARCHAR, P_UserCode varchar , P_org varchar, P_warehouse varchar, p_movetype varchar, p_billtype varchar, p_note varchar, p_isred varch

C# 获取 oracle 存储过程的 返回值

存储过程 CREATE OR REPLACE PROCEDURE ADMIN.INSERT_OBJ ( OBJEFIRT_parms IN NVARCHAR2, OBJEDATT_parms IN NVARCHAR2, OBJESECT_parms IN NVARCHAR2, OBJECONTENT_parms IN NVARCHAR2, ISRELEASE_parms IN INTEGER, OBJECODE_parms IN NVARCHAR2, TAGS_parms IN NVARCHAR

EF6调用存储过程,返回多个结果集处理

链接:http://www.codeproject.com/Articles/675933/Returning-Multiple-Result-Sets-from-an-Entity-Fram 案例:下载 Create Visual Studio Project with Entity Data Model Details to create an entity database-first app project are described in the MSDN tutorial. Foll

Oracle 存储过程学习

Oracle 存储过程学习 目录 Oracle 存储过程 1 Oracle存储过程基础知识 1 Oracle存储过程的基本语法 2 关于Oracle存储过程的若干问题备忘 4 1. 在Oracle中,数据表别名不能加as. 4 2. 在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了. 5 3. 在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常. 5 4.

oracle存储过程创建语法及常见异常

oracle存储过程创建语法及常见异常: oracle存储过程语法: CREATE[ORReplace]PROCEDURE[schema.]procedure_name [(argument[{IN|OUT|INOUT}]datatype, ... argument[{IN|OUT|INOUT}]datatype)] {IS|AS} [descriptionpart说明部分] BEGIN SQLSTATEMENT语句序列 [EXCEPTION例外处理] END[procedureName过程名]

面试概率极大的Oracle存储过程

1.什么是存储过程.存储过程是数据库服务器端的一段程序,它有两种类型.一种类似于SELECT查询,用于检索数据,检索到的数据能够以数据集的形式返回给客户.另一种类似于INSERT或DELETE查询,它不返回数据,只是执行一个动作.有的服务器允许同一个存储过程既可以返回数据又可以执行动作.2.什么时候需要用存储过程 如果服务器定义了存储过程,应当根据需要决定是否要用存储过程.存储过程通常是一些经常要执行的任务,这些任务往往是针对大量的记录而进行的.在服务器上执行存储过程,可以改善应用程序的性能.这