怪异问题!sql在pl/sql中执行结果与java jdbc执行结果不一致

做一查询系统(struts2+myeclipse+tomcat+oracle9),一般先在pl/sql中测试sql语句,无问题后在action中使用oracle thin模式连接数据库,执行sql语句,然后将查询结果存入HashMap后输出至jsp页面。
出现如下怪异问题:
1、在pl/sql中测试sql语句时结果正常。结果中有6个字段,其中两个字段为count()函数统计出的数值。
2、将在pl/sql中测试过的sql语句写入struts2的action中,通过jdbc thin模式执行,查询结果与pl/sql中测试结果不一致。
count()函数统计的那两个字段的值不一致,暂未发现规律。数值接近,互有高低。
在struts2的action中执行sql语句前,先打印sql语句,打印语句与pl/sql中测试语句一样,查询结果一致。
在action中执行sql语句后在将rs(RecordSet)存入HashMap前,输出rs内容,count()统计出的数值结果已经不一致。
该系统中类似查询功能有几个,实现方式方法相同,唯独这个出现pl/sql和jdbc执行同一句sql结果后部分字段数值不一致的诡异情况!
烦请大家帮助分析、支招!不胜感激!!

pl/sql查询和jdbc查询,使用相同的排序方式...分析下结果不同之处,你也可以贴出来看看,帮你分析一下。

向HashMap里存值时,键相同的值会被覆盖,比如:
Map map = new HashMap();
map.put("1", "1");
map.put("1", "211");
System.out.println("长度="+map.size()" 值="+map.get("1"));
打印结果:长度=1 值=211
因此你jsp页面显示的值可能会比sql语句查询的少

会不会是你pl/sql查询的table和jdbc查询的table根本不是一个table,但是是同名的,表空间不同。这个问题碰到过,纠结了很久,不知道能不能帮助你。

[quote]java.sql.SQLException: ORA-01003: ?????????[/quote]

为什么后面是???????

贴SQL语句

找你们的DBA把 [color=red]HOLD_CURSOR[/color]和 [color=red]RELEASE_CURSOR[/color]两个参数重新设置一下。另外,硬件允许的话,再把ORACLE内存优化一下。

印象中 count 统计出来的是个oracle int 类型.
貌似转换到 java 的 Stirng 得仔细下.
忘了.
LZ仔细看看吧.

是挺奇怪的,关注一下,想说的都被上面兄弟说了

是的一般以代码为准,有差别的话,pl/sql里面直接to_char 一把

是不是pl/sql有事务没有提交?pl/sql内查询是同一个事务。而struts2的action中,通过jdbc thin模式执行不是同一事务,所以结果不一样

我也感到很奇怪,希望LZ解决后把解决方法贴出来,我看到你里面用rs = stmt.executeQuery(sql); 你换用preparedstatement来查询

type Exception report ??

我也碰到类似的问题了,在SQL Developer中执行sql和用Java JDBC执行结果不一样。

后来查的原因是:我在SQL Developer中进行过insert,但没有手动commit,导致数据实际并未存储到数据库中。后来commit之后,就没问题了。

SQL Developer不会自动commit,很不习惯!!