SQL Server没有将十进制值传递给C#

时间:2015-01-27 21:14:50

标签: c# sql asp.net sql-server

我正在尝试将一个返回小数值的函数调用到我的C#网站。当我在SQL Server中调用函数时,会出现尾随的十进制值。但是当它传递给C#时,会丢失尾随的小数。

这是我的SQL Server存储过程:

declare @MonthlyTotal as decimal(10,2)
set @MonthlyTotal=(select cast((Linetotal * Subtotal) as decimal(10,2)))
return @MonthlyTotal

在我的C#服务器代码中,我收到了存储过程值。但它不带尾随小数。

SqlConnection sqlConnection = new SqlConnection(Connection);

SqlCommand cmd4 = new SqlCommand();
cmd4.Connection = sqlConnection;
cmd4.CommandType = CommandType.StoredProcedure;
cmd4.CommandText = "GetTBSMonthlyTotalService";

SqlParameter JobParam = new SqlParameter("MonthlyTotal", SqlDbType.Decimal, 10);
JobParam.Precision = 10;
JobParam.Scale = 2;
JobParam.Direction = ParameterDirection.ReturnValue;

cmd4.Parameters.Add(JobParam);

try
{
    sqlConnection.Open();
}
catch (Exception err)
{
    Console.WriteLine(err.Message);
}

cmd4.ExecuteNonQuery();

double ID = Double.Parse((cmd4.Parameters[0].Value.ToString()));
sqlConnection.Close();
return ID;

1 个答案:

答案 0 :(得分:4)

存储过程的返回值只能是整数类型(INTBIGINT - 请参阅relevant MSDN docs on RETURN)并且它仅用于发出信号存储过程的成功(或失败)。

如果需要返回任何其他内容(包括十进制),则需要使用OUTPUT参数或SELECT语句选择该值作为存储过程的结果集。