写代码的时候发现了 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) 把小数位数限制下也可以