从10.2.0.4升级到10.2.0.5,大家都认为这是个小操作,我也这么认为,以前我都说这个只是打上了些patch,不用做应用测试的,结果这次悲剧了。
跨版本升级,看来oracle都做了许多改动的,我碰到的这个是sql语法标准的问题
就是两个left join时,取的列相同的话在10.2.0.4里面不用在前面写上表名,10.2.0.5就需要:
在10.2.0.4里面实验
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production
SQL> create table test3(a int,b int);
insert into test3 values(2,2);
create table test2(a int,c int);
insert into test2 values(2,2);
create table test1(f int,c int);
insert into test1 values(2,2);Table created.
SQL>
1 row created.
SQL> SQL>
Table created.
SQL>
1 row created.
SQL> SQL>
Table created.
SQL>
1 row created.
SQL>
SQL>
SQL> commit;
SQL> select a from test1 left join test2 on test1.f=test2.a
2 left join test3 on test1.c=test3.b;
A
----------
2
在10.2.0.5里面实验:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE 10.2.0.5.0 Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.5.0 - Productio
NLSRTL Version 10.2.0.5.0 - Production
SQL> create table test3(a int,b int);
insert into test3 values(2,2);
create table test2(a int,c int);
insert into test2 values(2,2);
create table test1(f int,c int);
insert into test1 values(2,2);Table created.
SQL>
1 row created.
SQL> SQL>
Table created.
SQL>
1 row created.
SQL> SQL>
Table created.
SQL>
1 row created.
SQL>
SQL>
SQL> commit;
Commit complete.
SQL> select a from test1 left join test2 on test1.f=test2.a
2 left join test3 on test1.c=test3.b;
select a from test1 left join test2 on test1.f=test2.a
*
ERROR at line 1:
ORA-00918: column ambiguously defined
其实归根结底这是应用开发不严谨的问题,不过也提醒我们,并不是所有人的开发都是那么严谨,升级数据库切记要测试。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11088128/viewspace-688200/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/11088128/viewspace-688200/