递归在MSSQL开发中的应用

     在人力资源管理系统中,常常会有通过工号查找其所在部门主管的需求,但员工所在部门不一定有主管,可能要在上级才有,这时就需要用递归的方式将其主管找出来,MSSQL代码:

/*  
功能:取得指定部门代码的部门负责人  
创建人:baronyang  
创建时间:2008-12-23  
*/  
CREATE   FUNCTION [dbo].[Fn_GetDepManager]  
(@DepCode varchar(30))   
RETURNS varchar(30)  
as  
BEGIN      
  declare @PersonCode varchar(230),@ParentID int    
  IF Exists(select 1 from cs_department(nolock) where DepCode=@DepCode)    
  Begin    
   select @ParentID=[ParentID],@PersonCode=isnull(PersonCode,'') from cs_department(nolock) where DepCode=@DepCode    
   IF Isnull(@PersonCode,'')=''   
   Begin    
     select @DepCode=DepCode from cs_department(nolock) where [ID]=@ParentID           
     set @PersonCode=dbo.Fn_GetDepManager(@DepCode)              
   End  
  End   
 RETURN @PersonCode    
END  
还有部门的架构是多级时,需要将每一级的部门名称显示出来,也需要递归,mssql代码:

/*  
功能:取得指定部门代码的上级组织  
创建人:baronyang  
创建时间:2008-10-21  
*/  
Create  FUNCTION dbo.Fn_ShowDepTree  
(@DepCode varchar(20))   
RETURNS varchar(500)  
as  
BEGIN    
  declare @Department varchar(500),@DepName varchar(50),@ParentID int  
  select @DepName='',@Department=''  
  select @ParentID=[ParentID],@DepName=Department,@DepCode=DepCode from cs_department where DepCode=@DepCode  
  if @Department=''  
    set @Department=@DepName  
  else  
    set @Department=@DepName+'/'+@Department  
  if (@ParentID>0)  
    begin  
       select @DepCode=DepCode from cs_department where [ID]=@ParentID    
       set @Department=dbo.Fn_ShowDepTree(@DepCode)+'/'+@Department  
    end  
RETURN @Department  
END  





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值