Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
生活随笔
收集整理的這篇文章主要介紹了
Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
原文 Oracle存儲過程實現(xiàn)返回多個結(jié)果集 在構(gòu)造函數(shù)方法中使用 dataset
?
DataSet相當你用的數(shù)據(jù)庫; DataTable相當于你的表。一個 DataSet 可以包含多個 DataTable。如果用datatable只適合返回一個結(jié)果集(游標)的信息。
例:
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存儲過程實現(xiàn):
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)ISVTYPENUMBER INTEGER;VPAYSTATUS NVARCHAR2(4000);VARREARSSTATUS NVARCHAR2(4000);VREFUNDSTATUS NVARCHAR2(4000);BEGINSELECT VTYPE INTO VTYPENUMBER FROM DUAL;IF (VTYPENUMBER=2)THEN OPEN VRETURN_LIST1 FOR SELECT REFUNDSTATUS,PAYSTATUS FROM TRA_REFUNDORDER WHERE BARGAINORDERCODE=VBARGAINORDERCODEAND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE;--解決: ORA-24338: 未執(zhí)行語句句柄 一定要進行對游標輸出參數(shù)值賦值ELSE OPEN VRETURN_LIST1 FOR SELECT VREFUNDSTATUS AS REFUNDSTATUS,VPAYSTATUS AS PAYSTATUS FROM DUAL;END IF;IF (VTYPENUMBER=3 )THENOPEN VRETURN_LIST2 FORSELECT ARREARSSTATUS FROM TRA_ARREARSORDER WHERE BARGAINORDERCODE=VBARGAINORDERCODEAND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE;ELSE OPEN VRETURN_LIST2 FOR SELECT VARREARSSTATUS AS ARREARSSTATUS FROM DUAL;END IF;IF (VTYPENUMBER=5 )THENOPEN VRETURN_LIST3 FOR SELECT PAYSTATUS FROM TRA_ORDERPAYMENTINFO WHERE BARGAINORDERCODE=VBARGAINORDERCODEAND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE; ELSE OPEN VRETURN_LIST3 FOR SELECT VPAYSTATUS AS PAYSTATUS FROM DUAL;END IF;END;?
轉(zhuǎn)載于:https://www.cnblogs.com/arxive/p/5959478.html
總結(jié)
以上是生活随笔為你收集整理的Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RPM安装rabbitMQ
- 下一篇: 用假数据模仿