当我尝试使用 C# 将以下 Oracle 空间对象转换为坐标集(小数)时,出现算术溢出异常(decimal) OracleUdt.GetValue()
MDSYS.SDO_GEOMETRY(2001, 1041001,
MDSYS.SDO_POINT_TYPE(-2.89957214912471,1.56043985049899E-15,NULL),NULL,NULL)
根据Oracle文档 http://download.oracle.com/docs/html/E10927_01/OracleDecimalStructure.htm,这可能是因为其中一个十进制值超出了 .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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)