系统原来用的是9i,现在换到11g。
结果一些sql查询出错了,大部分是重复列名,没有指定所属表名,可见11g更严格了。sql语法的变化,由于更严格,可能导致错误。
请问都有哪些变化, 额外有什么要注意的?

解决方案 »

  1.   

    使其也没那么夸张
    是你写脚本的不规范导致的一个软件的版本升级,都会向下兼容的,所以9i的语法在10g,11g中都是兼容的,只会扩展出一些新的语法,不会对老版本原有东西有什么影响特别是sql语句。我不明白的是你那个sql在9i里是怎么编译通过的。
      

  2.   

    有哪些改变,查下10g新特性就知道了
    楼主的问题应该与版本无关
    当表连接的查询字段没写所属表名的时候,若该字段只在其中一个表里有,会自动查找所属表,若在不止一个表里都有该字段,9i应该也会报错的
    除非用join .. using()的写法,不要加表名
    一般还是写上表名为好,嫌麻烦的话起个表别名
    增强逻辑和可读性
      

  3.   

    谢谢各位,已经确认是oracle的bug,11g后续版本已经fix。
    还是非常感谢大家,现在安心多了。
      

  4.   


    lz能描述的更清楚一些么,以后大家看到此类问题也就知道是bug叻。
      

  5.   

    在这里有描述:
    http://www.dbforums.com/oracle/1644379-ambiguity-select-statements-views.html#post6408526