Oracle遞歸算法的經(jīng)典用途,比如 多級(jí)部門下,子部門不能作為父部門的父部門。
有點(diǎn)拗口,比方說(shuō)吧,爸爸部門下有甲兒子部門和乙兒子部門,甲或乙兒子部門不能成為爸爸部門的上級(jí)部門。
這個(gè)是很多管理系統(tǒng)的多級(jí)分類下的經(jīng)典需求。
好吧。給出部門表結(jié)構(gòu)--Department。-
Name Type Nullable Default Comments
---------- ------------- -------- ------- --------
ID NUMBER(12) --ID
DEPT_NO VARCHAR2(32) Y --部門編號(hào)
COMPANY_NO VARCHAR2(4) Y --區(qū)域
NAME VARCHAR2(128) Y --名字
PARENT_NO VARCHAR2(32) Y --父部門編號(hào)
判斷子部門是否能成為爸爸部門的上級(jí)部門,采用到了遞歸。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,則子部門不能成為爸爸部門的上級(jí)部門;如果返回值不等于1,反之
本文出自:億恩科技【www.allwellnessguide.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|