CONNECT_BY_ISCYCLE

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;



這樣




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章