select * from tb_cus_area_cde
--子取父
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_snr_area=a.c_area_cde START WITH a.c_area_cde='1040101'
--父取子
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_area_cde=a.c_snr_area START WITH a.c_snr_area is null
注意:在用這個函數的時候,statement的參數要用 ResultSet.TYPE_SCROLL_INSENSITIVE 而不能用 ResultSet.TYPE_SCROLL_SENSITIVE,在這裏再把這兩個之間的區別講講:
1.TYPE_FORWORD_ONLY,只可向前滾動;
2.TYPE_SCROLL_INSENSITIVE,雙向滾動,但不及時更新,就是如果數據庫裏的數據修改過,並不在ResultSet中反應出來。
3.TYPE_SCROLL_SENSITIVE,雙向滾動,並及時跟蹤數據庫的更新,以便更改ResultSet中的數據
對於互爲父子的情況,會出現死循環
SELECT
SYS_CONNECT_BY_PATH (EMPLOYEE,'/') as EMPLOYEE,
MANAGER,
CONNECT_BY_ISCYCLE
FROM
T
CONNECT BY
NOCYCLE
PRIOR EMPLOYEE = MANAGER;
這樣