在.NET中连接oracle,使用dataadapter fill的时候出现OCI-22053: overflow error的异常,因为.NET的数据类型精度比oracle的类型精度小,类如
select sysdate-issuetime as timediff from sometable中返回的精度过大,改为
select trunc(sysdate-issuetime,2) as timediff from sometable后就可以了。
在网上有另外一些处理方法:
http://excel.cnblogs.com/archive/2005/11/14/276202.html 使用新版ODP.NET的da.SafeMapping.Add(字段名1,typeof(System.String));方法把所有字段转为string类型。不过上了oracle网站看了一下,发现9207版的ODAC要80M。。。懒得下载了。。
Oracle 数值数据类型最多可存储 38 个字节的精度。
当将 Oracle 数值转换为公共语言运行库数据类型时,
Oracle 值可能会变得过大。这会导致 Oracle OCI-22053 溢出错误。
解决方法是用round函数。
如何使用 Oracle Round 函數 (四捨五入)
描述 : 傳回一個數值,該數值是按照指定的小數位元數進行四捨五入運算的結果。
SELECT ROUND( number, [ decimal_places ] ) FROM DUAL
參數:
number : 欲處理之數值
decimal_places : 四捨五入 , 小數取幾位 ( 預設為 0 )
Sample :
select round(123.456) from dual;
select round(123.456, 0) from dual;
select round(123.456, 1) from dual;
select round(123.456, 2) from dual;
select round(123.456, 3) from dual;
select round(-123.456, 2) from dual;
在.NET中连接oracle,使用dataadapter fill的时候出现OCI-22053: overflow error的异常,因为.NET的数据类型精度比oracle的类型精度小,类如
select sysdate-issuetime as timediff from sometable中返回的精度过大,改为
select trunc(sysdate-issuetime,2) as timediff from sometable后就可以了。
在网上有另外一些处理方法:
http://excel.cnblogs.com/archive/2005/11/14/276202.html 使用新版ODP.NET的da.SafeMapping.Add(字段名1,typeof(System.String));方法把所有字段转为string类型。不过上了oracle网站看了一下,发现9207版的ODAC要80M。。。懒得下载了。。