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 ININTEGERDEFAULTNULL,
VBARGAINORDERCODE IN TRA_ORDERPAYMENTINFO.BARGAINORDERCODE%TYPE DEFAULTNULL,
VPARKUSERID IN TRA_ORDERPAYMENTINFO.PARKUSERID%TYPE DEFAULTNULL,
VBERTHCODE IN TRA_ORDERPAYMENTINFO.BERTHCODE%TYPE DEFAULTNULL
)
IS
VTYPENUMBER INTEGER;
VPAYSTATUS NVARCHAR2(4000);
VARREARSSTATUS NVARCHAR2(4000);
VREFUNDSTATUS NVARCHAR2(4000);
BEGINSELECT VTYPE INTO VTYPENUMBER FROM DUAL;
IF (VTYPENUMBER=2)
THENOPEN VRETURN_LIST1 FORSELECT REFUNDSTATUS,PAYSTATUS FROM TRA_REFUNDORDER WHERE BARGAINORDERCODE=VBARGAINORDERCODE
AND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE;
--解决: ORA-24338: 未执行语句句柄 一定要进行对游标输出参数值赋值ELSEOPEN VRETURN_LIST1 FORSELECT VREFUNDSTATUS AS REFUNDSTATUS,VPAYSTATUS AS PAYSTATUS FROM DUAL;
ENDIF;
IF (VTYPENUMBER=3 )
THENOPEN VRETURN_LIST2 FORSELECT ARREARSSTATUS FROM TRA_ARREARSORDER WHERE BARGAINORDERCODE=VBARGAINORDERCODE
AND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE;
ELSEOPEN VRETURN_LIST2 FORSELECT VARREARSSTATUS AS ARREARSSTATUS FROM DUAL;
ENDIF;
IF (VTYPENUMBER=5 )
THENOPEN VRETURN_LIST3 FORSELECT PAYSTATUS FROM TRA_ORDERPAYMENTINFO WHERE BARGAINORDERCODE=VBARGAINORDERCODE
AND PARKUSERID=VPARKUSERID AND BERTHCODE=VBERTHCODE;
ELSEOPEN VRETURN_LIST3 FORSELECT VPAYSTATUS AS PAYSTATUS FROM DUAL;
ENDIF;
END;
原文:http://www.cnblogs.com/ruishuang208/p/4193429.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!