#region OutSave
/// <summary>
///
/// </summary>
/// <param name="Contno"></param>
/// <returns></returns>
public void OutSave(OutStockParmDto dto,ref String louid, ref String msg) {
//打开连接
DBConfigration myDBConfigration = new DBConfigration();
OleDbConnection conn = new OleDbConnection("Provider=MSDAORA;" + myDBConfigration.GetConnString()); //连接数据库
try
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("//要调用的过程名//", conn);
cmd.CommandType = CommandType.StoredProcedure;
//创建只输入参数
//对应到存储过程里的变量名(用于创建输入参数)
string[] paramstr ={ "AL_STACKID", "AL_LINID", "AS_OPERATOR", "AS_CONTNOFLAG", "AL_CONID", "AL_VANID", "AS_CONTNO", "AS_TRUCKNO", "AS_DRIVER", "AS_HAULIER", "AL_TID" ,"AL_PKGS" ,"AL_KGS"};
//对应要赋给的值(对应输入参数要赋予的值)
Object[] paramVal = { dto.Stackid, dto.Linid, dto.Operators, dto.Contnoflag, dto.Conid, dto.Vanid, dto.Contno, dto.Truckno, dto.Driver, dto.Haulier, dto.Tid,dto.Pkgs,dto.Kgs };
//0 标识传入的参数类型是数字类型,1标识传入的参数类型是字符串
int[] type = {0,0,1,1,0,0,1,1,1,1,0,0,0 };
//循环创建输入参数
if (paramstr.Length == paramVal.Length && paramstr.Length == type.Length)
{
for (int f = 0; f < paramstr.Length; f++)
{
OleDbParameter parameter_in;
//判断要转换的类型
if (type[f] == 0)
{
parameter_in = new OleDbParameter(paramstr[f], OleDbType.Numeric);
}
else
{
parameter_in = new OleDbParameter(paramstr[f], OleDbType.VarChar);
}
parameter_in.Direction = ParameterDirection.Input;
if (type[f] == 0)
{
//如果是数字,需要进行进一步判断处理
if (paramVal[f] == null)
{
parameter_in.Value = 0;
}
else if (paramVal[f].ToString().Trim().Equals(""))
{
parameter_in.Value = 0;
}
else
{
parameter_in.Value = Convert.ToDecimal(paramVal[f]);
}
}
else
{
parameter_in.Value = paramVal[f];
}
cmd.Parameters.Add(parameter_in);
}
}
创建输出参数
cmd.Parameters.Add("AL_LOUID", OleDbType.Numeric);
cmd.Parameters.Add("AS_MSG", OleDbType.VarChar, 100);
cmd.Parameters["AL_LOUID"].Direction = ParameterDirection.Output;
cmd.Parameters["AS_MSG"].Direction = ParameterDirection.Output;
//参数创建完后,执行过程并提交
cmd.ExecuteNonQuery();
this.ExecuteSqlNoneReturn(" COMMIT ");
//获取输出参数返回的内容
louid = cmd.Parameters["AL_LOUID"].Value.ToString().Trim();
msg = cmd.Parameters["AS_MSG"].Value.ToString().Trim();
}
catch (Exception e)
{
throw e;
}
finally
{
//关闭连接
conn.Close();
}
}
#endregion
.net调用存储过程(包含多个输入输出参数)的处理方式
最新推荐文章于 2022-05-19 15:51:05 发布