DECLARE @px int
DECLARE @n money
SET @px=0
SET @n=0
UPDATE #12 SET ndhsl=CONVERT(int,ndhsl/ntpbzl)*ntpbzl+ntpbzl
WHERE px=1
WHILE @px<20
BEGIN
SET @px=@px+1
SET @n='select ntpbzl-((ndhsl- '+@n+' )%ntpbzl) from #12 WHERE  px= '+@PX+' '''
    UPDATE #12 SET ndhsl=CONVERT(int,ndhsl-@n/ntpbzl)*ntpbzl+ntpbzl
    WHERE px=@px+1
    end
提示消息 235,级别 16,状态 0,第 10 行
无法将 char 值转换为 money。该 char 值的语法有误。请问哪错了怎么改

解决方案 »

  1.   

    DECLARE @px int
    DECLARE @n money
    SET @px=0
    SET @n=0
    UPDATE #12 SET ndhsl=CONVERT(int,ndhsl/ntpbzl)*ntpbzl+ntpbzl
    WHERE px=1
    WHILE @px<20
    BEGIN
    SET @px=@px+1
    SET @n=select ntpbzl-((ndhsl- @n )%ntpbzl) from #12 WHERE  px= @PX
        UPDATE #12 SET ndhsl=CONVERT(int,ndhsl-@n/ntpbzl)*ntpbzl+ntpbzl
        WHERE px=@px+1
        end
      

  2.   

     @n这个变量是money类型,可在  SET @n='select ntpbzl-((ndhsl- '+@n+' )%ntpbzl) from #12 WHERE  px= '+@PX+' '''这里赋的值却是字符串
      

  3.   

    1楼。这有错误是?
    消息 156,级别 15,状态 1,第 10 行
    关键字 'select' 附近有语法错误。
      

  4.   

    DECLARE @px int
    DECLARE @n money
    SET @px=0
    SET @n=0
    UPDATE #12 SET ndhsl=CONVERT(int,ndhsl/ntpbzl)*ntpbzl+ntpbzl
    WHERE px=1
    WHILE @px<20
    BEGIN
    SET @px=@px+1
        select @n=ntpbzl-((ndhsl- @n )%ntpbzl) from #12 WHERE  px= @PX
        UPDATE #12 SET ndhsl=CONVERT(int,ndhsl-@n/ntpbzl)*ntpbzl+ntpbzl
        WHERE px=@px+1
        end
      

  5.   

    select @n=@n+ntpbzl-((ndhsl- @n )%ntpbzl) from #12 WHERE  px= @PX