【发布时间】:2010-12-22 11:03:10
【问题描述】:
我通过以下方式将十进制值发送到存储过程:
SqlParameter meh = new SqlParameter("Foo", SqlDbType.Decimal);
meh.Value = "0.00001";
meh.Precision = ((System.Byte)(12));
meh.Scale = ((System.Byte)(9));
当我分析数据库以查看正在对其运行的内容时,我看到的参数如下:
....,@Foo decimal(12,9),....,@Foo=10000,....
它似乎完全从小数点镜像,我该如何解决这个问题?请注意,我也尝试过先将字符串转换为实际的小数并使用它来设置“meh.Value”,但它仍然存在同样的问题。
更新
我注意到,如上例所示,原始值的小数点向右移动了 9 个位置,与刻度的值完全相同。这是什么原因造成的?
再次更新
我应该注意我使用的是 Sql Server 2008
【问题讨论】:
-
您是否尝试过事后对表格进行选择并查看从中得到什么?
-
如果生成的 SQL 实际针对数据库运行,则会引发以下错误:“将数据类型 int 转换为十进制时出错。”
-
这可能是语言环境的问题吗?也许它将点解释为数字分隔符,就像他们在英国使用的那样,就像我们在美国使用逗号一样。由于您的值是一个正在被解析的字符串,它可能被解析为 1 而不是 0.00001。
标签: .net sql decimal sqlparameter