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一定要给分呀
我想实现的效果是update A set 某列=@wcsl+某列
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
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
问题解决了 应该是: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))谢谢各位!
@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一定要给分呀
and JHYF=''+@month+'' and FCBH='+@fcmh+' and SCRWDH='+@scrwdh+' and RWH='+@rwh
2、 int 变量拼接的时候
select 'a'+ltrim(1)
如果
select 'a'+1 会报错的。
@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
应该是: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))谢谢各位!