现在的位置: 首页 > 综合 > 正文

在.NET中使用OracleDataAdapter添充数据集报OCI-22053错误溢出解决方法

2014年11月11日 ⁄ 综合 ⁄ 共 989字 ⁄ 字号 评论关闭

执行sql,在oracle中不会有问题,但是放在.NET里执行sql就会报错:溢出

原因:
  Oracle 数值数据类型最多可存储 38 个字节的精度。当将 Oracle 数值转换为公共语言运行库数据类型时,
Oracle 值可能会变得过大。这会导致 Oracle OCI-22053 溢出错误。

解决办法:
  1.使用Round函数:SELECT ROUND(1/3,2) FROM DUAL
  2.使用TO_CHAR:SELECT TO_CHAR(1/3) FROM DUAL 

       3.使用ceil 取整

  第一种会减小精度,但数据类型不变,第二种则不会改变精度,但数据类型改变。

用oracle sql对数字进行操作: 取上取整、向下取整、保留N位小数、四舍五入、数字格式化

取整(向下取整): 
select floor(5.534) from dual;
select trunc(5.534) from dual;
上面两种用法都可以对数字5.534向下取整,结果为5.


如果要向上取整 ,得到结果为6,则应该用ceil
select ceil(5.534) from dual;

 


四舍五入: 
SELECT round(5.534) FROM dual;
SELECT round(5.534,0) FROM dual;
SELECT round(5.534,1) FROM dual;
SELECT round(5.534,2) FROM dual;
结果分别为 6,  6,  5.5,  5.53

 


保留N位小数(不四舍五入): 
select trunc(5.534,0) from dual;
select trunc(5.534,1) from dual;
select trunc(5.534,2) from dual;
结果分别是 5,5.5,5.53,其中保留0位小数就相当于直接取整了。

 


数字格式化: 
select to_char(12345.123,'99999999.9999') from dual;
结果为12345.123

select to_char(12345.123,'99999999.9900') from dual;
小数后第三第四为不足补0,结果为12345.1230

select to_char(0.123,'99999999.9900') from dual;
select to_char(0.123,'99999990.9900') from dual;
结果分别为 .123, 0.123

抱歉!评论已关闭.