Oracle遞歸算法的經(jīng)典用途,比如 多級部門下,子部門不能作為父部門的父部門。
有點拗口,比方說吧,爸爸部門下有甲兒子部門和乙兒子部門,甲或乙兒子部門不能成為爸爸部門的上級部門。
這個是很多管理系統(tǒng)的多級分類下的經(jīng)典需求。
好吧。給出部門表結(jié)構(gòu)--Department。-
Name Type Nullable Default Comments
---------- ------------- -------- ------- --------
ID NUMBER(12) --ID
DEPT_NO VARCHAR2(32) Y --部門編號
COMPANY_NO VARCHAR2(4) Y --區(qū)域
NAME VARCHAR2(128) Y --名字
PARENT_NO VARCHAR2(32) Y --父部門編號
判斷子部門是否能成為爸爸部門的上級部門,采用到了遞歸。SQL:
SELECT COUNT(*) FROM (SELECT D.DEPT_NO,D.PARENT_NO FROM Department D
CONNECT BY PRIOR D.DEPT_NO = D.PARENT_NO
START WITH D.DEPT_NO = #deptNo# ) t where t.DEPT_NO = #parentNo#
其中 CONNECT BY PRIOR .... START WITH..... 就是遞歸。 #deptNo# 、#parentNo# 分別代表 子部門 和 爸爸部門。
如果返回值等于1,則子部門不能成為爸爸部門的上級部門;如果返回值不等于1,反之
本文出自:億恩科技【m.1tcdy.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|