本帖最后由 z1987428z 于 2012-03-06 14:21:15 编辑

解决方案 »

  1.   

    declare @rqjh varchar(10),@rqrk varchar(10),@rqce varchar(10),@year int,@month int,
    @fcmh varchar(10),@scrwdh varchar(20),@rwh int,@wcsl numeric(18,2)
    declare @str nvarchar(1000)
    set @str='update CPJHJHJZBH set '+@rqrk+'='''+cast(@wcsl as nvarchar(18))
    +'''+'+@rqrk+','+@rqce+'='+@rqjh+'-'+@rqrk+' where JHNF='+cast(@year as nvarchar(10))+'
     and JHYF='++cast(@month as nvarchar(10))+' and FCBH='+@fcmh+' and SCRWDH='+@scrwdh+' and RWH='+@rwhLz一定要给分呀
      

  2.   

    我想实现的效果是update A set 某列=@wcsl+某列
      

  3.   

    set @str='update CPJHJHJZBH set '+@rqrk+'='''+cast(@wcsl   as   varchar(100)) +'''+'+@rqrk+','+@rqce+'='+@rqjh+'-'+@rqrk+' where JHNF=''+@year+''
     and JHYF=''+@month+'' and FCBH='+@fcmh+' and SCRWDH='+@scrwdh+' and RWH='+@rwh  
      

  4.   

    1、 varchar 改成 nvarchar
    2、 int 变量拼接的时候 
    select 'a'+ltrim(1)
    如果
    select 'a'+1 会报错的。
      

  5.   

    declare @rqjh varchar(10),@rqrk varchar(10),@rqce varchar(10),@year int,@month int,
    @fcmh varchar(10),@scrwdh varchar(20),@rwh int,@wcsl numeric(18,2)
    declare @str nvarchar(1000)
    set @str='update CPJHJHJZBH 
    set '+ @rqrk +'=
    '''+  cast( @wcsl as varchar(100))  +'''+'+@rqrk+',
    '+@rqce+'='+@rqjh+'-'+@rqrk+'
     where JHNF=''+@year+''
     and JHYF=''+@month+'' and FCBH='+@fcmh+' and SCRWDH='+@scrwdh+' and RWH='+@rwh
      

  6.   

    问题解决了
    应该是:set @str1='update CPJHJHJZBH set '+@rqrk+'='+cast(@wcsl as varchar(100))+'+ISNULL('+@rqrk+',0) where JHNF='+cast(@year as varchar(10))+' and JHYF='+cast(@month as varchar(10))+' and FCBH='''+cast(@fcmh as varchar(10))+''' and SCRWDH='''+cast(@scrwdh as varchar(20))+''' and RWH='+cast(@rwh as varchar(10))谢谢各位!