c# - SQL 存储过程未返回小数位

标签 c# asp.net-mvc-5

情况

正如问题所述,我有一个程序,输入一个值后,该值将发送到我的存储过程,计算 80% 和 20%,并通过 out 参数返回。

问题

问题是,尽管我认为我的代码应该可以工作,但在计算 80% 和 20% 时并没有返回小数位。我已经查看了代码,并且在 SQL 管理器中运行代码工作正常,但我只是无法将正确的值获取到我的 C# 应用程序中。

C# 代码

        decimal fl_covByA;
        decimal fl_covByB;
        using (Bookstore_DBEntities x = new Bookstore_DBEntities())
        {


            ObjectParameter covByIndiv = new ObjectParameter("covByIndiv", typeof(decimal));
            ObjectParameter covByIns = new ObjectParameter("covByIns", typeof(decimal)); 
            x.cal_InsCoverage(cla_bookDetails.cost,covByIndiv, covByIns); //Breakpoint shows values without decimals
            fl_covByB = (decimal)covByIndiv.Value;
            fl_covByA = (decimal)covByIns.Value;
        }

存储流程

CREATE PROCEDURE [dbo].[cal_InsCoverage]
@cost numeric(18,2),
@covByIndiv numeric(18,2) OUT,
@covByIns numeric(18,2) OUT
AS
SELECT @covByIndiv=(@cost*20)/100,@covByIns=(@cost*80)/100
GO

如果我传递的成本为 100.25,我会在查询结果中得到 20.05 80.20,但根据我的断点,我会得到 20 和 80。因此,我们将不胜感激。

问候。

最佳答案

每当您将小数参数传递给 SQL Server 存储过程时,您都必须设置该参数的精度和小数位数,否则它将默认为小数位数 0,从而去掉小数部分。您的 ObjectParameter 类可能具有 Precision 和 Scale 属性,或者您可以搜索“如何在 ObjectParameter 上设置精度和比例”并找到正确的方法。

关于c# - SQL 存储过程未返回小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400188/

相关文章:

c# - 将数据模板元素绑定(bind)到子类的属性

c# - 从 VB6 字符串数据到 .NET 字节数组的转换

c# - 避免在 ASP.NET MVC 5 应用程序的 Action 上使用 OnResultExecuted Filter

c# - Entity Framework 种子不工作

javascript - MVC如何刷新布局页面中的部分 View

arrays - 发布字符串数组

asp.net-mvc-5 - elmah 下载日志不起作用

c# - 删除脚本错误弹出窗口

c# - 简单的数据库处理

c# - LINQ 查询上的 foreach() 速度慢 - ToList() 极大地提高了性能 - 为什么会这样?