在 C# 中, 我对 Sql Server 存储过程使用十进制输出 DbParameter。 我这样创建参数
DbParameter prm = comm.CreateParameter();
prm.ParameterName = "@Price";
prm.DbType = DbType.Decimal;
prm.Direction = ParameterDirection.Output;
comm.Parameters.Add(prm);
//and set the value of comm.Parameters["@Price"] to a variable,
decimal.TryParse(comm.Parameters["@Price"].Value.ToString(),
out this.ProdPrice);
但是 out 参数的值总是四舍五入。
如果我从 Sql Server Management Studio 调用相同的存储过程,我可以得到它 参数与它的精度正确
DbParameter 没有精度或比例属性。 而且我必须在 System.Data.Common 命名空间上使用 DbParameter 来获取数据
我怎样才能完全精确地获取十进制值
提前致谢...
最佳答案
加上Marc的建议,可以把代码改成
IDbDataParameter prm = comm.CreateParameter();
其余代码应该可以正常工作。 Precision 和 Scale 属性是 DbParameter 中的“显式接口(interface)实现”。
关于c# - 十进制 DbParameter 的精度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/514044/