Las*_*sus 5 .net sql decimal sqlparameter
我通过以下方式向sproc发送十进制值:
SqlParameter meh = new SqlParameter("Foo", SqlDbType.Decimal);
meh.Value = "0.00001";
meh.Precision = ((System.Byte)(12));
meh.Scale = ((System.Byte)(9));
Run Code Online (Sandbox Code Playgroud)
当我分析数据库以查看对其运行的内容时,我看到如下参数:
....,@Foo decimal(12,9),....,@Foo=10000,....
Run Code Online (Sandbox Code Playgroud)
它似乎从小数点完全镜像,我该如何解决这个问题?请注意,我还尝试将字符串首先转换为实际小数,并使用它来设置'meh.Value',但它仍然存在同样的问题.
我注意到,如上例所示,原始值的小数点向右移动了9个位置,与刻度完全相同.什么会导致这个?
我应该注意到我正在使用Sql Server 2008
小智 4
为什么您显式使用 System.Byte 来表示 SqlParameter Precision 和 Scale?代码应该是这样的:
SqlParameter meh = new SqlParameter("Foo", SqlDbType.Decimal);
meh.Value = 0.00001;
meh.Precision = 12;
meh.Scale = 9;
Run Code Online (Sandbox Code Playgroud)