您的位置:首页 > 数据库

根据编号取得完整名称。

2015-03-27 15:44 183 查看
IF EXISTS (SELECT * FROM sysobjects 

    WHERE  name = N'[fun_TZJMC]')

    DROP FUNCTION [dbo].[fun_TZJMC]

GO

CREATE FUNCTION [dbo].[fun_TZJMC] (@tcid int)

RETURNS varchar(4000)

AS

BEGIN

    DECLARE @pid int, @tid int;   -- 编号

    DECLARE @p1 int, @p2 int; -- 搜索位置

    DECLARE @path varchar(1000); -- 指定路径

    DECLARE @spec varchar(200), @CurSpec varchar(200);  -- 名称

    DECLARE @Result varchar(4000); --全称

    

    SET @Result = '';

    -- 取得指定路径、名称

    SELECT @path = JDQXZ, @CurSpec = ISNULL(ZJMC, '无名称')

    FROM TZJMC WHERE ID = @tcid;

    -- 如果路径为空则直接返回名称

    IF (@path IS NULL) OR (LEN(@path) = 0)

        RETURN @CurSpec;

    SET @p1 = 0;

    SET @p2 = CHARINDEX(',', @path, @p1);

    WHILE @p2 <> 0

    BEGIN

        -- 取得编号

        SET @pid = CONVERT(int, SUBSTRING(@path, @p1, @p2 - @p1));

        SET @p1 = @p2+1 ; -- 移动搜索起始位置

        IF @pid <> 0

        BEGIN

            SELECT @spec = ISNULL(ZJMC, '无名称')

            FROM TZJMC WHERE ID = @pid;  

            SET @Result = @Result + @spec + '>>';

        END;

        -- 下一个

        SET @p2 = CHARINDEX(',', @path, @p1);

    END;

    SET @Result = @Result + @CurSpec;

    

    RETURN @Result;

END
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  function sql