select * from km_dir start with parentdirid='"+id+"'" Connect by prior parentdirid=dirid

解决方案 »

  1.   

    楼上的好像不太行吧 。。小弟刚刚学oracle但是觉得应该改成这样:
    select * from km_dir start with parentdirid=(select parentdirid from km_dir where dirid=@id) connect by prior parentdirid=dirid
      

  2.   

    对,按楼主的意思应该是
    select * from km_dir start with dirid='"+id+"'" Connect by prior parentdirid=dirid
      

  3.   

    注意:
    1、select * from km_dir start with dirid='"+id+"'" Connect by prior parentdirid=dirid

    2、select * from km_dir start with parentdirid=(select parentdirid from km_dir where dirid='"+id+"') connect by prior parentdirid=dirid
    是有区别的举个例子如下:
    SQL> select * from treea;       PID        CID         TT
    ---------- ---------- ----------
             1          2         10
             1          3          1
             2          4          6
             2          5          7
             5          6          8
             9         11         10
             9         12         10
            11         15         10已选择8行。SQL> select * from treea connect by prior pid=cid start with pid=2;       PID        CID         TT
    ---------- ---------- ----------
             2          4          6
             1          2         10
             2          5          7
             1          2         10SQL> select * from treea connect by prior pid=cid start with cid=5;       PID        CID         TT
    ---------- ---------- ----------
             2          5          7
             1          2         10SQL>