我正在尝试将一个返回小数值的函数调用到我的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;
答案 0 :(得分:4)
存储过程的返回值只能是整数类型(INT
,BIGINT
- 请参阅relevant MSDN docs on RETURN
)并且它仅用于发出信号存储过程的成功(或失败)。
如果需要返回任何其他内容(包括十进制),则需要使用OUTPUT
参数或SELECT
语句选择该值作为存储过程的结果集。