Chinaunix

标题: 很大的负数,居然就取不完整了! [打印本页]

作者: juboosnov    时间: 2009-07-01 11:48
标题: 很大的负数,居然就取不完整了!
表里面有两个NUMBER型的字段A、B,及若干CHAR型字段,用游标取值。
A字段里为12位的正整数,一切正常;
B字段里为位数不定的整数,其中一条数据为-123999999(6个9),从游标取出后竟然变成了-12399999(5个9)。百思不得其解!难道是bug?
作者: 山野村夫    时间: 2009-07-01 12:01
确定不是格式的问题?
作者: aaaaa5aa    时间: 2009-07-01 12:18
标题: 回复 #2 山野村夫 的帖子
和尚应该说对了,肯定是格式问题
作者: juboosnov    时间: 2009-07-01 12:55
啊?什么格式问题啊?大师能不能说详细一点呢

我自己建了个表试了试,取出来是正常的,就那个表bill.ACT_1809@dl_accta5取出来不对
作者: 山野村夫    时间: 2009-07-01 15:17
标题: 回复 #4 juboosnov 的帖子
我记得可以为表设置缺省输出格式的,不知道是不是这个问题

ps:手头沒有环境,没法测试
作者: aaaaa5aa    时间: 2009-07-01 15:51
你把你的表贴上来,贴个图上来我们看看
作者: juboosnov    时间: 2009-07-02 10:50
直接用plsqldev、sqlplus进行select,正常,
就是OCI程序用游标取,不正常
作者: 山野村夫    时间: 2009-07-02 14:30
标题: 回复 #7 juboosnov 的帖子
你确定不是你程序的问题?
作者: juboosnov    时间: 2009-07-03 17:51
写了个测试程序

就是游标读数。分了3个,
第一个是本地的表TBL_XXX,
第二个是另一数据库通过DBLINK连接本地的表TBL_XXX,
第三个是通过DBLINK连接外部的表ACT_XXX。

结果就第三个有问题……

但是它是外部的,我也看不到它的什么格式啊设置啊这些……


运行结果:

2009-06-03 17:34:19 select  K_C, K_B , K_A from cc.TBL_XXX where length(to_char(K_A)) > 8
2009-06-03 17:34:20 cur(1):
K_C: 14579645642342  K_B: 545353562409  K_A: 123999999  
2009-06-03 17:34:20 cur(2):
K_C: 14579645642342  K_B: 352282992233  K_A: -123999999  

2009-06-03 17:34:20 select  K_C, K_B , K_A from cc.TBL_XXX@dl_tbw where length(to_char(K_A)) > 8
2009-06-03 17:34:22 cur(1):
K_C: 14579645642342  K_B: 545353562409  K_A: 123999999  
2009-06-03 17:34:22 cur(2):
K_C: 14579645642342  K_B: 352282992233  K_A: -123999999  

2009-06-03 17:34:22 select  K_C, K_B , K_A from bill.ACT_1809@dl_accta5 where length(to_char(K_A)) > 8
2009-06-03 17:34:26 cur(1):
K_C: 14579645642342  K_B: 545353562409  K_A: 123999999  
2009-06-03 17:34:26 cur(2):
K_C: 14579645642342  K_B: 352282992233  K_A: -12399999
作者: ILoveMK    时间: 2009-07-03 18:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: 山野村夫    时间: 2009-07-03 19:37
原帖由 ILoveMK 于 2009-7-3 18:15 发表

非常正常的结果。

最后一个K_A不对

[ 本帖最后由 山野村夫 于 2009-7-3 19:41 编辑 ]
作者: 山野村夫    时间: 2009-07-03 19:42
原帖由 juboosnov 于 2009-7-3 17:51 发表
写了个测试程序

就是游标读数。分了3个,
第一个是本地的表TBL_XXX,
第二个是另一数据库通过DBLINK连接本地的表TBL_XXX,
第三个是通过DBLINK连接外部的表ACT_XXX。

结果就第三个有问题……

但是它 ...

这个我也不懂了,通过DBLINK连接外部的表时用SQLPLUS正常吗?
作者: ILoveMK    时间: 2009-07-03 22:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: juboosnov    时间: 2009-07-07 10:26
select  K_C, K_B , K_A from cc.TBL_XXX@dl_tbw where length(to_char(K_A)) > 8;

K_C                    K_B          K_A
-------------------- ------------ ----------
379005434923           3.4194E+11  123999999
379005434923           3.5223E+11 -123999999


select  K_C, K_B , K_A from bill.ACT_1809@dl_accta5 where length(to_char(K_A)) > 8;


K_C                    K_B          K_A
---------- ------------ ----------
3.7901E+11   3.4194E+11  123999999
3.7901E+11   3.5223E+11 -123999999




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2