报表在线开发时,数据源形如:SELECT A.CLASSID,B.CLASSID FROM CLASSINFO A,STUDENT B WHERE A.CLASSID=B.CLASSID。
这个语句在SQL PLUS中执行是对的,在华丹快速开发平台中为了处理分页,采用orale官方推荐的方法:
select * from (SELECT A.CLASSID,B.CLASSID FROM CLASSINFO A,STUDENT B WHERE A.CLASSID=B.CLASSID) where rownum<10
则执行时就会报错: java.sql.SQLException: ORA-00918: 未明确定义列。
分析:在这个语句中,查询列有两个,分别是取两个表的CLASSID字段,可能是oracle的bug,在处理分页SQL时报错。可以按如下方法解决:
select * from (SELECT A.CLASSID as classid, B.CLASSID as classid2 FROM CLASSINFO as A,STUDENT as B WHERE A.CLASSID=B.CLASSID) where rownum<10
即通过设定不同的别名修正。