c# - SQL Server 不将十进制值传递给 C#

标签 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;

最佳答案

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

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

关于c# - SQL Server 不将十进制值传递给 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28180133/

相关文章:

c# - 在 C# ASP 中预填充多个级联下拉列表

c# - 有没有办法从 ExcelWorkBook 中获取 byte[] 而无需先将其保存到磁盘

c# - 单击 WebBrowser 控件中 iframe 中的按钮

sql - 提取(从 'Now' 开始的一周)错误

sql - MySQL LEFT JOIN 的限制

ASP.NET 成员资格/角色 - 如何将用户链接到多个应用程序/角色?

c# - 我应该如何将用户与域对象相关联?

C# 与 MySQL 连接器 - 访问被拒绝

mysql - SQL连接wordpress表

c# - Visual Studio 无法检测到新创建的 asp.net 类 "website"