SELECT DBO.QTStrToINT('33,43,32,32')

解决方案 »

  1.   

    SELECT dbo.QTStrToINT('33,43,32,32')
    ------^^^^加上所有者
      

  2.   

    服务器: 消息 536,级别 16,状态 3,过程 QTStrToInt,行 12
    Invalid length parameter passed to the substring function.
      

  3.   

    --function写错了,应该是:
    CREATE FUNCTION QTStrToInt (@QTStr nvarchar(200))
    RETURNS INT AS  
    BEGIN 
      DECLARE @RESULT INT
      DECLARE @POS INT
      SET @RESULT = 0
      IF LEN(@QTSTR) > 0 AND RIGHT(@QTStr, 1) <> ',' 
        SET @QTStr = @QTStr + ','
      WHILE LEN(@QTStr) > 0
      BEGIN
        SET @POS = CHARINDEX( ',',@QTStr)--------改成这样的
        SET @RESULT = @RESULT + CAST(LEFT(@QTStr, @POS - 1) as INT)
        SET @QTStr = STUFF(@QTStr, 1, @POS, '')
      END
      RETURN @RESULT
    END
      

  4.   

    CHARINDEX
    傳回字元字串中指定運算式的起始位置。 語法
    CHARINDEX ( expression1 , expression2 [ , start_location ] ) 引數
    expression1是包含要尋找的字元序列的運算式。expression1 是短字元資料型別類別的運算式。expression2是個運算式,通常是搜尋指定序列的資料行。expression2 是字元字串資料型別類別的運算式。start_locationIs the character position to start searching for expression1 in expression2.若 start_location 未提供、為負數或零,則會由 expression2 的開頭開始搜尋。
      

  5.   

    谢谢,搞定了.请问能不能把dbo去掉?
      

  6.   

    zjcxc(邹建) 
        这种函数调用不能去掉dbo,能不能讲讲其它方法?是不是象pisces007(蝶鱼) 所讲:
        如果是返回结果集,可以不用所有者,如果返回的值,就一定要加
      

  7.   

    不能,这是SQL的语法定.返回值的函数是一定要加所有者,而返回结果集的函数可以省略