ALTER FUNCTION f_PMS_GetUserName
(
@UserID VARCHAR(100)
)
RETURNS VARCHAR(100)
AS
BEGIN
--定义
DECLARE @ResultVar VARCHAR(100)
--初始
SET @ResultVar = ''
--获取结果
SELECT @ResultVar = @ResultVar + UserName
FROM dbo.Sys_User WHERE ID IN (@UserID)
--返回
RETURN @ResultVar
END
GO
表【Sys_User】里的【ID】是int类型执行:
SELECT DBO.f_PMS_GetUserName('7') --没问题执行:
SELECT DBO.f_PMS_GetUserName('7,160')
报错:
在将 varchar 值 '7,160' 转换成数据类型 int 时失败。

解决方案 »

  1.   

    你这个需要用动态SQL 才能实现
      

  2.   


    ALTER FUNCTION f_PMS_GetUserName
    (
        @UserID VARCHAR(100)
    )
    RETURNS VARCHAR(100)
    AS
    BEGIN
        --定义
        DECLARE @ResultVar VARCHAR(100)
        --初始
        SET @ResultVar = ''
        --获取结果
        SELECT @ResultVar = @ResultVar + UserName
        FROM dbo.Sys_User WHERE CHARINDEX(',' + RTRIM(ID) + ',',',' + @UserID + ',') > 0
        --返回
        RETURN @ResultVar
    END
    GO
      

  3.   

    http://topic.csdn.net/u/20120613/16/26fd229d-e838-4dc3-8c87-32a264286efb.html