Ado.net 调用oracle存储过程
时间:2021-07-01 10:21:17
帮助过:5人阅读
HealthInsurance_PatientInfo GetYBJKData_ByHisId(
string strHisid)
{
HealthInsurance_PatientInfo entity =
new HealthInsurance_PatientInfo();
#region 初始化存储过程参数
OracleConnection conn =
new OracleConnection(EFContextFactory.GetCurrentDbContext().Database.Connection.ConnectionString);
OracleCommand cmd =
new OracleCommand();
cmd.Connection =
conn;
cmd.CommandType =
CommandType.StoredProcedure;
cmd.CommandText =
"proc_healthinsurance_seljsxx";
cmd.Parameters.Add("i_Var_HisId", OracleDbType.Varchar2,
30);
cmd.Parameters["i_Var_HisId"].Direction =
ParameterDirection.Input;
cmd.Parameters["i_Var_HisId"].Value =
strHisid;
cmd.Parameters.Add("o_Int_StayDays", OracleDbType.Int32);
cmd.Parameters["o_Int_StayDays"].Direction =
ParameterDirection.Output;
cmd.Parameters.Add("o_Num_CostAmount", OracleDbType.Double);
cmd.Parameters["o_Num_CostAmount"].Direction =
ParameterDirection.Output;
cmd.Parameters.Add("o_Var_PayOffDate", OracleDbType.Varchar2,
30);
cmd.Parameters["o_Var_PayOffDate"].Direction =
ParameterDirection.Output;
cmd.Parameters.Add("o_Var_BXLB_Code", OracleDbType.Int32);
cmd.Parameters["o_Var_BXLB_Code"].Direction =
ParameterDirection.Output;
cmd.Parameters.Add("o_Int_CostDetail_Count", OracleDbType.Int32);
cmd.Parameters["o_Int_CostDetail_Count"].Direction =
ParameterDirection.Output;
cmd.Parameters.Add("o_Var_Result", OracleDbType.Varchar2,
200);
cmd.Parameters["o_Var_Result"].Direction =
ParameterDirection.Output;
#endregion;
try
{
conn.Open();
cmd.ExecuteNonQuery();
entity.Result = cmd.Parameters[
6].Value.ToString();
// -1 执行成功 其他 爆出异常
if (!entity.Result.Equals(
"-1"))
{
return entity;
}
entity.strHisId = cmd.Parameters[
0].Value.ToString();
entity.StayDays = cmd.Parameters[
1].Value.ToString();
entity.CostAmount = cmd.Parameters[
2].Value.ToString();
entity.PayOffDate = cmd.Parameters[
3].Value.ToString();
entity.BXLB_Code = cmd.Parameters[
5].Value.ToString();
entity.CostDetail_Count = cmd.Parameters[
4].Value.ToString();
}
catch (Exception ex)
{
entity.Result =
ex.Message;
return entity;
}
finally
{
if (conn.State ==
ConnectionState.Open)
{
conn.Close();
conn.Dispose();
}
cmd.Dispose();
}
return entity;
}
方式2 EF调用
EFContextFactory.GetCurrentDbContext().Database.ExecuteSqlCommand("prco_xxx(a=>:a)",new object{a})
Ado.net 调用oracle存储过程
标签: