下面代码中  where 中的 (+) 是什么含义?
                SELECT   NVL(D058.NOHIN_YMD,' ')
                        ,NVL(D058.SHO_CD,' ')
                        ,NVL(D058.TOK_JAN_CD,' ')
                        ,NVL(D058.SHO_NM,' ')
                        ,NVL(D058.SKSJ_G,' ')
                        ,NVL(D058.B_HONTEN_CD,' ')
                        ,NVL(D058.HIYO_CASE_C,0)
                        ,NVL(H045.SKSJ_G_KNM,' ')
                        ,NVL(H017.HONTEN_KNM,' ')
                        ,NVL(E052.YUKOZAIKO,' ')
                  FROM   WD058YSPR  D058
                        ,TE052EZAI  E052
                        ,TH017HNTN  H017
                        ,TH045SKSG  H045
                 WHERE   H017.HONTEN_CD         =  D058.B_HONTEN_CD
                   AND   E052.SOKO_CD(+)        =  '11'
                   AND   E052.EGY_HONTEN_CD(+)  =  H017.EGY_HONTEN_CD
                   AND   E052.EGY_SITEN_CD(+)   =  '00000'
                   AND   E052.SHO_CD(+)         =  D058.SHO_CD
                   AND   E052.EGY_FROM_YMD(+)  <=  D058.NOHIN_YMD
                   AND   E052.EGY_TO_YMD(+)    >=  D058.NOHIN_YMD
                   AND   D058.SKSJ_G            =  H045.SKSJ_G(+)
               ORDER BY  D058.SHO_CD
                        ,D058.SKSJ_G
                        ,D058.B_HONTEN_CD并且在 PL/SQL 通不过,
去掉  AND   E052.EGY_HONTEN_CD(+)  =  H017.EGY_HONTEN_CD 中的(+)就通过了?
不知道为什么?烦各位解决一下! 谢谢!

解决方案 »

  1.   

    (+)在左边是right outer join
    (+)在右边是left outer join
      

  2.   

    报的什么错?
    是不是E052.EGY_HONTEN_CD和H017.EGY_HONTEN_CD的类型不匹配?
      

  3.   

    SQL> select * from a1;BBB
    ----------
    101
    102
    103
    104
    105SQL> select * from a2;BBB        CCC
    ---------- --------------------
    101
    102
    105SQL> select * from a1,a2 where a1.bbb(+)=a2.bbb;BBB        BBB        CCC
    ---------- ---------- --------------------
    101        101
    102        102
    105        105SQL> select * from a1,a2 where a1.bbb=a2.bbb(+);BBB        BBB        CCC
    ---------- ---------- --------------------
    101        101
    102        102
    103
    104
    105        105SQL>
      

  4.   

    报错内容:
    ORA-01417: 表が少なくとも1つの他の表に外部結合されている可能性があります
      

  5.   

    ORA-01417: 表可以外部连接到至多一个其它的表 
    你能创建一个两个表之间外部链接的视图来完成这个工作,然后将这个视图和第三个表之间进行外部链接来达到这个目的。
      

  6.   

    (+)是外联结,你的SQL中分析:D058应该是主表,用它与其它表外关联可以了,但不能同时把H017也作外连接如:AND   E052.EGY_HONTEN_CD(+)  =  H017.EGY_HONTEN_CD 中的(+) 是错误的,一个SQL中不能出现两个以上的主表,所以oracle产生无法识别主表的错误。
      

  7.   

    一个表只能做一次外连接,你的E052和表H017、D058分别外连接,不符合语法