ALTER FUNCTION F_AccountObj ( @obj NVARCHAR(50) )
RETURNS NVARCHAR(200)
AS 
    BEGIN
        DECLARE @str NVARCHAR(200)
        DECLARE @num INT
        DECLARE @next INT
        DECLARE @length INT  
        SET @next = 1
        SET @length = 0 
        SET @str = ''     
        SELECT  @length = dbo.Get_StrArrayLength(@obj)   
        
        WHILE @next <= @length 
            BEGIN
                SELECT  @num = dbo.Get_StrArrayStrOfIndex(@next)
                SELECT  @str+= systems_des
                FROM    dbo.NMS_Base_System
                WHERE   Systems_ID = @num
        
                SET @next += 1
            END
        RETURN @str    END
go
 

解决方案 »

  1.   

    嘿嘿 不好意思 是我自己的 参数给错了,
    因为最开始 是这样ALTER FUNCTION F_AccountObj ( @obj NVARCHAR(50) )
    ALTER FUNCTION F_AccountObj ( @obj NVARCHAR(50) )
    RETURNS NVARCHAR(200)
    AS 
        BEGIN        DECLARE @strsql NVARCHAR(200)        SET @strsql = '
    DECLARE @str NVARCHAR(100)
    SET @str=''''
    SELECT @str+=systems_des + '','' FROM dbo.NMS_Base_System WHERE Systems_ID IN ('
                + @obj + ') 
    '
            PRINT @strsql
            EXEC (@strsql)
            RETURN  ''
              END
    go
      function 中不能使用print 不能使用exec