/*
名称:获取以,分隔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