欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQLServer常用自定义函数记录

程序员文章站 2024-02-22 23:36:16
...

1、查询完整组织名称

USE [populac]
GO
/****** Object:  UserDefinedFunction [dbo].[f_getUnitName]    Script Date: 07/10/2018 16:48:08 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[f_getUnitName](@ VARCHAR(20)) 

RETURNS varchar(150) 
AS 
BEGIN 
	DECLARE @t TABLE(unitcode VARCHAR(30), upunitcode VARCHAR(30), [unitname] VARCHAR(80), [upunitname] VARCHAR(80),Level INT)
    DECLARE @level INT
	DECLARE @result varchar(150)
    SET @level=1
    INSERT INTO @t SELECT unitcode,upunitcode,unitname,upunitname,@level FROM unit WHERE [email protected]
    WHILE(@@ROWCOUNT>0)
        BEGIN 
            SET @level[email protected]level+1
            INSERT INTO @t SELECT t.unitcode,t.upunitcode,t.unitname,t.upunitname,@level FROM unit AS t,@t AS a WHERE t.upunitcode<>'@' and a.upunitcode=t.unitcode AND [email protected]level-1
        END
   BEGIN
           DELETE @t where [email protected]
   END
   --stuff((select '-'+[unitname]  from dbo.f_getParent('100100020404') order by unitcode for xml path('')), 1, 1, '')
   select @result = stuff((select '-'+[unitname]  from @t order by unitcode for xml path('')), 1, 1, '')
RETURN @result
END
复制代码

select dbo.f_getUnitName('100100020404'); //---党委/工会-党群办公室