[點(diǎn)晴永久免費(fèi)OA]遞歸在MSSQL開發(fā)中的應(yīng)用
當(dāng)前位置:點(diǎn)晴教程→點(diǎn)晴OA辦公管理信息系統(tǒng)
→『 經(jīng)驗分享&問題答疑 』
在人力資源管理系統(tǒng)中,常常會有通過工號查找其所在部門主管的需求,但員工所在部門不一定有主管,可能要在上級才有,這時就需要用遞歸的方式將其主管找出來,MSSQL代碼:
/* 功能:取得指定部門代碼的部門負(fù)責(zé)人 創(chuàng)建人:baronyang 創(chuàng)建時間: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 還有部門的架構(gòu)是多級時,需要將每一級的部門名稱顯示出來,也需要遞歸,mssql代碼: /* 功能:取得指定部門代碼的上級組織 創(chuàng)建人:baronyang 創(chuàng)建時間: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 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |