oracle的自带事务
发布时间:2020-12-12 15:34:25 所属栏目:百科 来源:网络整理
导读:/// summary /// 单据提交 00-00正常 00-01提交成功未上传物流文件 01单据不存在 02状态不正确 03没上传物流文件 04单据关闭成功 05已出库 06出库失败 07库存不足 08无dn明细 09校验不通过 /// /summary /// param name="dtParameter"/param /// returns/ret
/// <summary> /// 单据提交 00-00正常 00-01提交成功未上传物流文件 01单据不存在 02状态不正确 03没上传物流文件 04单据关闭成功 05已出库 06出库失败 07库存不足 08无dn明细 09校验不通过 /// </summary> /// <param name="dtParameter"></param> /// <returns></returns> public static string Submit(string dnNo,string computerNo,string isImport,string cacheKey){ using (OracleConnection conn = new OracleConnection(OracleHelper.InstanceWMS.GetDBString("WMSDB"))) { string Ret = "01"; if (isImport != "1") { return "09"; } conn.Open(); OracleTransaction trans = conn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted); try { DataTable dn = Get_DnBill(dnNo); if (dn == null || dn.Rows.Count == 0) { return "01"; } string Status = dn.Rows[0]["STATUS"] == DBNull.Value ? "10" : dn.Rows[0]["STATUS"].ToString(); //并发拦截 if (Status == "10" || Status == "20") { Ret = SubmitDa(dnNo,computerNo,cacheKey,trans); if (Ret == "00-00" || Ret == "00-01") { trans.Commit(); } else { trans.Rollback(); } } else { Ret = "02"; } } catch (Exception ex) { Ret = ex.Message; trans.Rollback(); } return Ret; } } /// <summary> /// 提交的数据访问 /// </summary> /// <param name="dnNo"></param> /// <param name="computerNo"></param> /// <param name="cacheKey"></param> /// <returns></returns> private static string SubmitDa(string dnNo,string cacheKey,OracleTransaction trans){ string Ret = "01"; OracleCommand com = trans.Connection.CreateCommand(); com.Transaction = trans; com.CommandType = CommandType.StoredProcedure; com.CommandText = "PKG_DNBILL.PRO_DN_OUTBOUND"; OracleParameter[] Parames=new OracleParameter[4]; Parames[0] = new OracleParameter("PS_DN_NO",OracleType.VarChar); Parames[0].Direction = ParameterDirection.Input; Parames[0].Value = dnNo; Parames[1] = new OracleParameter("PS_COMPUTER_NO",OracleType.VarChar); Parames[1].Direction = ParameterDirection.Input; Parames[1].Value = computerNo; Parames[2] = new OracleParameter("PS_CACHEKEY",OracleType.VarChar); Parames[2].Direction = ParameterDirection.Input; Parames[2].Value = cacheKey; Parames[3] = new OracleParameter("PC_RESULT",OracleType.Cursor); Parames[3].Direction = ParameterDirection.Output; com.Parameters.AddRange(Parames); DataTable table = new DataTable(); OracleDataAdapter da1 = new OracleDataAdapter(com); da1.Fill(table); if (table != null && table.Rows.Count > 0) { Ret = table.Rows[0][0].ToString(); } return Ret; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |