始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Oralce之递归算法

发布时间:  2012/9/4 17:10:31

Oracle递归算法的经典用途,比如 多级部门下,子部门不能作为父部门的父部门。

有点拗口,比方说吧,爸爸部门下有甲儿子部门和乙儿子部门,甲或乙儿子部门不能成为爸爸部门的上级部门。

这个是很多管理系统的多级分类下的经典需求。

 


好吧。给出部门表结构--Department。-
 


Name       Type          Nullable Default Comments   
---------- ------------- -------- ------- --------    
ID         NUMBER(12)              --ID                   
DEPT_NO    VARCHAR2(32)  Y         --部门编号                  
COMPANY_NO VARCHAR2(4)   Y         --区域                
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,反之


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线