ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 对于升级到10.2.0.5的警示

对于升级到10.2.0.5的警示

原创 Linux操作系统 作者:浪漫双鱼 时间:2011-03-01 15:03:47 0 删除 编辑

    从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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-10

  • 博文量
    87
  • 访问量
    232688