Chinaunix首页 | 论坛 | 博客
  • 博客访问: 944580
  • 博文数量: 264
  • 博客积分: 10107
  • 博客等级: 上将
  • 技术积分: 2455
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-09 16:34
文章分类

全部博文(264)

文章存档

2012年(1)

2011年(11)

2010年(128)

2009年(82)

2008年(42)

我的朋友

分类: Oracle

2009-09-17 10:28:55

 

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;              回傳 123

select round(123.456, 0) from dual;          回傳 123

select round(123.456, 1) from dual;          回傳 123.5

select round(123.456, 2) from dual;          回傳 123.46

select round(123.456, 3) from dual;          回傳 123.456

select round(-123.456, 2) from dual;        回傳 -123.46

 

 

-------------------------------------------------------------------------------------------------

才知道Oralce里的Number数据是按字节存储的。

C#获取数据时,dataReader.GetDecimal(3);时报如上错误,才知道是数据溢出了,我求的是一个AVG()数据。

后来按此方法在外用Round()截取小数位,解决!

阅读(2466) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~