递归在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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值