写代码的时候发现了 Oracle OCI-22053 错误,找了很久
原来以为是Fill(DataSet)有问题,后来换成OracleDataReader 还是这样。
后来看MSDN才看到
Oracle 数值数据类型最多可存储 38 个字节的精度。
当将 Oracle 数值转换为公共语言运行库数据类型时,
Oracle 值可能会变得过大。这会导致 Oracle OCI-22053 溢出错误。
当将 Oracle 数值转换为公共语言运行库数据类型时,
Oracle 值可能会变得过大。这会导致 Oracle OCI-22053 溢出错误。
原来的代码类似于
Comander.CommandText = "SELECT 1/3 FROM DUAL ";
结果返回的小数点后位数太多,造成了dotnet转换后Oracle OCI-22053错误。
后来转换为字符型,改成 SELECT TO_CHAR(1/3) FROM DUAL这样就可以
或者把ROUND(1/3,2) 把小数位数限制下也可以
写代码时遇到Oracle OCI-22053错误,起初以为是Fill(DataSet)问题,换用OracleDataReader仍未解决。查阅MSDN得知,Oracle数值数据类型存储精度有限,转换为公共语言运行库数据类型时可能溢出。通过将查询结果转换为字符型或限制小数位数可解决该问题。
2630





