X龙@China .Net 'blog

需要的不仅仅是工作,而是通过努力得来的美好将来。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
/*
    名称:获取以,分隔ProdMaterialClass的MClassIDHex获取以,分隔的MClassName
*/
ALTER FUNCTION GetMaterialNameByHexIDs ( @HexIDs VARCHAR(100) )
RETURNS NVARCHAR(200)
    BEGIN
        /* 如果参数没有值,返回 '' */
        IF ( LEN(@HexIDs) = 0 ) 
            RETURN ''        
            
        DECLARE @result NVARCHAR(200)
        DECLARE @tempHexID VARCHAR(30)     
        DECLARE @commaLocation INT
        
        SET @commaLocation = CHARINDEX(',', @HexIDs)
        
        IF @commaLocation > 0 
            SET @tempHexID = SUBSTRING(@HexIDs, 1, @commaLocation - 1) /* 获取第一个,前面的字符串 */
        ELSE 
            SET @tempHexID = @HexIDs
        
        SET @result = ''
        
        /* 获取的字符串有值,读取其名称以,分隔保存到@result */
        WHILE LEN(@tempHexID) > 0 
            BEGIN
                DECLARE @tempClassName NVARCHAR(50)
                
                /* 与待定数据库表相关的操作 开始 */
                SELECT  @tempClassName = MClassName
                FROM    ProdMaterialClass
                WHERE   MClassIDHex = @tempHexID
                /* 与待定数据库表相关的操作 结束 */
                
                SET @result = @result + @tempClassName + ','
                
                /* 如果源@HexIDs中不包含,  退出循环 */
                IF (CHARINDEX(',', @HexIDs) = 0)
                    BREAK;
                        
                /* 去除第一个,及其前面的字符串,保存到源@HexIDs中*/
                SET @HexIDs = SUBSTRING(@HexIDs, CHARINDEX(',', @HexIDs) + 1, LEN(@HexIDs) - CHARINDEX(',', @HexIDs))                 
                SET @commaLocation = CHARINDEX(',', @HexIDs)
                
                IF @commaLocation > 0 
                    SET @tempHexID = SUBSTRING(@HexIDs, 0, @commaLocation - 1)
                ELSE 
                    SET @tempHexID = LTRIM(RTRIM(@HexIDs))
            END
            
            IF (LEN(@result)>0)
                RETURN LEFT(@result,LEN(@result)-1)
            RETURN ''
    END
点击这里给我发消息http://wp.qq.com/index.html