今天做一个查询结果为30列的view,left outer join了26张表,报出错误“ORA-01792 表或视图的最大列数为1000”,少left outer join了几张表,视图成功创建。因此我怀疑,left outer join在执行的时候,把所有左联结的表的所有列都先聚合在一起,然后在这个结果集里再得到我们要查询的列。然后又做了个测试,将left outer join 改写成 select 列 from t1,t2,t3...t26 where t1.列 = t2.列(+)....     ,结果语句正常执行。 Oracle是如何执行外关联的? 哪位达人指导一下

解决方案 »

  1.   

    能把你的sql语句贴出吗?应该不会这样吧
      

  2.   

    做了2个table, 第一个table名字为test1 共有999列,列名为A1...A999,第二个table名字为test2,共有2列,列名为B1,B2.情况一: select test1.A1,test2.B1 from test1 left outer join test2 on test1.A1 = test2.B1       则报错"ORA-01792 表或视图的最大列数为1000"情况二:select test1.A1,test2.B1 from test1,test2 where test1.A1 = test2.B1(+) 则可以执行
      

  3.   

    我同事也遇到过相同的问题,一直困惑中,貌似oracle的问题,无法解决。
    lz你就认了吧。