[点晴永久免费OA]递归在MSSQL开发中的应用
当前位置:点晴教程→点晴OA办公管理信息系统
→『 经验分享&问题答疑 』
在人力资源管理系统中,常常会有通过工号查找其所在部门主管的需求,但员工所在部门不一定有主管,可能要在上级才有,这时就需要用递归的方式将其主管找出来,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 该文章在 2020/3/3 1:50:49 编辑过 |
关键字查询
相关文章
正在查询... |