在 C# 中尝试使用 (decimal) OracleUdt.GetValue()
MDSYS.SDO_GEOMETRY(2001, 1041001,
MDSYS.SDO_POINT_TYPE(-2.89957214912471,1.56043985049899E-15,NULL),NULL,NULL)
根据 Oracle documentation ,这可能是因为其中一个十进制值超出了 .NET 的 28 位小数精度范围。我们数据库中超过此精度限制的数据极为罕见,转换需要尽可能高效。
如果结果超出最大精度,通过优雅地截断结果来处理此异常的最佳选择是什么?
最佳答案
VB.NET 代码,未经测试,但我对我拥有的 oracleDecimal 使用了类似的东西。 转换为 C# 应该很容易。
OracleDecimal oraDec = MDSYS.SDO_GEOMETRY(2001, 1041001,
MDSYS.SDO_POINT_TYPE(-2.89957214912471,1.56043985049899E-15,NULL),NULL,NULL)
oraDec = OracleDecimal.SetPrecision(oraDec, 28) ' !!!
Decimal netDec = oraDec.Value
关于c# - 有效地将 OracleDecimal 转换为带截断的 .NET 十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7559419/