首页 新闻 会员 周边 捐助

【Oracle】莫名其妙的 OCI-22063 错误

0
悬赏园豆:50 [已关闭问题] 关闭于 2017-08-08 15:04

问题简述:

同样的SQL语句,偶尔会出现如下 OCI-22063 的错误,但是程序再重新执行跑一遍,又不会出现错误,表中基本是 NUMBER 字段,有的设置了精度和小数位数,有的没有设置,不过都设置了默认值和不能为空。不知道有没有人遇到这种情况,有没有可能是 Oracle 自身(版本)的问题呢?还望不吝赐教。

01码匠的主页 01码匠 | 初学一级 | 园豆:129
提问于:2016-08-24 10:56
< >
分享
所有回答(2)
0

使用一下oracle的round方法吧

四舍五入一下应该就好了!

刘宏玺 | 园豆:14020 (专家六级) | 2016-08-24 10:59

有关于计算的,最外层都用了Round,其他没参与计算的字段也要吗?

支持(0) 反对(0) 01码匠 | 园豆:129 (初学一级) | 2016-08-24 11:05

@Memento: 如果你都使用了,应该就不会出现这个问题了

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-08-24 11:07

@刘宏玺: 现在问题就是我用Round了,结果还会报这个错误,而且是间歇性没规律的冒出来的...甚是纠结...

支持(0) 反对(0) 01码匠 | 园豆:129 (初学一级) | 2016-08-24 11:10

@Memento: 那我也不清楚了,一般我遇到类似的问题都是精度照成的

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-08-24 11:14

@刘宏玺: 如果一个字段设置成NUMBER,并且不设置其精度和小数位数,然后再导入数据(C#的int类型数据),会不会出现导入的其实不是整型数据,而是什么.999999999...之类的?

支持(0) 反对(0) 01码匠 | 园豆:129 (初学一级) | 2016-08-24 11:34

@Memento: 应该不会,number的默认精度是float 38

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2016-08-24 11:36
0

sql语句虽然一样,但是值不一样。C#有   有符号和无符号数,,java只有  有符号整数。Oracle是属于java的。。你研究一下,在保存值的时候,如何把C#的byte转成sbyte

弦断有谁听 | 园豆:20 (初学一级) | 2016-08-24 11:24

您的意思是:同样的SQL语句,第一次跑和第二次跑出来的值会不一样?...那就麻烦了!保存值是内部封装好的,而且其他SQL语句都没有这个问题,所以应该跟保存值操作没有关系。

支持(0) 反对(0) 01码匠 | 园豆:129 (初学一级) | 2016-08-24 11:32

@Memento: 你Oracle客户端版本是多少?

支持(0) 反对(0) 弦断有谁听 | 园豆:20 (初学一级) | 2016-08-24 12:12

@弦断有谁听: 11.2.0

支持(0) 反对(0) 01码匠 | 园豆:129 (初学一级) | 2016-08-24 12:15

@Memento: 你用oracle.dataaccess连接数据库,不要用微软自身的System.Data.Oracle......试试

支持(0) 反对(0) 弦断有谁听 | 园豆:20 (初学一级) | 2016-08-24 12:17

@Memento:哪个数据遇到问题了,你调试看看啊,看数据和其他数据有什么区别

支持(0) 反对(0) 弦断有谁听 | 园豆:20 (初学一级) | 2016-08-24 12:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册