楼上的好像不太行吧 。。小弟刚刚学oracle但是觉得应该改成这样: select * from km_dir start with parentdirid=(select parentdirid from km_dir where dirid=@id) connect by prior parentdirid=dirid
对,按楼主的意思应该是 select * from km_dir start with dirid='"+id+"'" Connect by prior parentdirid=dirid
注意: 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>
select * from km_dir start with parentdirid=(select parentdirid from km_dir where dirid=@id) connect by prior parentdirid=dirid
select * from km_dir start with dirid='"+id+"'" Connect by prior parentdirid=dirid
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>