日期:2014-05-17  浏览次数:20461 次

.net中带输出参数的存储过程,返回值没有怎么回事
//表示层的代码
decimal money = 0; //接收钱
LeaveInfoManager.OutAddManager(id, us.EmpID.EmpID, Convert.ToDateTime(txtLeaveDate.Text), out money);
//业务逻辑层
public static void  OutAddManager(int id, int empid, DateTime outdate, out decimal money)
{
LeaveInfoService.OutAddManager(id, empid, outdate, out money);
}
//数据访问层
public static void OutAddManager(int id, int empid, DateTime outdate, out decimal money)
 {
 SqlParameter[] para = new SqlParameter[]
 {
new SqlParameter("@oldid",id),
new SqlParameter("@outdate",outdate), 
 new SqlParameter("@empid",empid)
};
 DBHelper.GetOutProce("[dbo].[leave_Old]", out money, para);
}
//Dbhelp中的代码
public static SqlDataReader GetOutProce(string name, out decimal res, params SqlParameter[] values)
        {
            try
            {
                SqlCommand com = new SqlCommand();
                com.Connection = Connection;
                com.CommandType = CommandType.StoredProcedure;
                com.CommandText = name;
                com.Parameters.AddRange(values);
                com.Parameters.Add("@money", SqlDbType.Decimal);
                com.Parameters["@money"].Direction = ParameterDirection.Output;

                using (SqlDataReader sdr = com.ExecuteReader())
                {
                    res = Convert.ToDecimal(com.Parameters["@money"].Value);
                    return sdr;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                connection.Close();
         &nb