我正在尝试调用一个向我的 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;
最佳答案
存储过程的返回值只能是整数类型(INT
、BIGINT
- 参见relevant MSDN docs on RETURN
)并且它是仅用于表示存储过程成功(或失败)。
如果您需要返回任何其他内容 - 包括小数 - 您需要使用 OUTPUT
参数,或选择该值作为结果集的 SELECT
语句存储过程。
关于c# - SQL Server 不将十进制值传递给 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28180133/