Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
2023-09-14 09:02:24 时间
原文 Oracle存储过程实现返回多个结果集 在构造函数方法中使用 dataset
DataSet相当你用的数据库; DataTable相当于你的表。一个 DataSet 可以包含多个 DataTable。如果用datatable只适合返回一个结果集(游标)的信息。
例:
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;
相关文章
- ORA-13642: The specified string string provided for string cannot be converted to a date. The acceptable date format is string. ORACLE 报错 故障修复 远程处理
- Oracle 等待事件 shared server idle wait 官方解释,作用,如何使用及优化方法
- 数据库选型:Oracle统领全球(数据库选型oracle)
- 探索Oracle的周末判断方法(oracle判断是否周末)
- 构建构建Oracle储存结构的正确方法(oracle存储结构正确)
- 【Oracle中判断星期的方法】(oracle判断星期)
- 使用Oracle获取最新数据的方法(oracle获取最新数据)
- 开启Oracle服务:指南及步骤(如何开启oracle服务)
- 深入浅出:Oracle中比较日期时间的方法(oracle比较日期时间)
- Oracle输出圆周率的奇妙之旅(oracle圆周率)
- 的权限Oracle数据库不同用户权限管理(oracle不同用户)
- Oracle中最大值函数的使用方法(oracle最大函数)
- Oracle如何增加一行数据(oracle增加一行数据)
- Oracle 按字符分割实现技术(oracle按字符分割)
- Oracle查询表锁的方法和注意事项(oracle查询表锁)
- 解锁Oracle数据库中的授权存储过程(oracle授权存储过程)
- 利用Oracle实现数据交换的高效方法(oracle交换数据)
- 使用Oracle管道导入数据的方法及操作流程(oracle管道导入)
- 轻松掌握Oracle表编辑技巧:快速简单有效的方法(oracle表编辑)
- Oracle 日志写入记录的实践方法(oracle写入日志)
- Oracle数据库中的默认值配置研究(oracle中默认值)
- Oracle中空值判断的有效方法(oracle中空值判断)
- 用Oracle技术实现值域互换(oracle互换两个值域)
- 利用Oracle事务提高数据安全性(oracle事物的运用)
- 解决Oracle数据库乱码插入问题(oracle乱码插入)
- 值Oracle存储位和值的奥妙(oracle 位与)
- Oracle仓库模块实现数据集中管理(oracle仓库模块应用)
- 利用Oracle实现环比计算的方法(oracle中环比计算)
- Oracle中文正则表达式最佳实践(oracle中文正则)
- 使用Oracle轻松实现中文拼音排序(oracle中文拼音排序)
- 使用Oracle中的ROLLBACK语句实现数据回滚(oracle中回滚语句)
- 过程Oracle中如何安全删除存储过程(oracle中删除存储)
- Oracle shmfs共享内存文件系统的变革(oracle shmfs)
- Oracle架构下1亿数据查询实践研究(oracle 1亿数据)