大神来帮忙啦!该怎么解决

大神来帮忙啦!!
原来的语句是:
update tablename  
set  con1='X'+replicate('0',8-len(con2))+cast(con2  as nvarchar(10))
想要改成存储过程,我是这么写的:
set @sql='update'+@tablename+ 'set con1='+''x'+'+'replicate('+'0'+',8-len(con2))+cast(con2 as nvarchar(10))'
exec(@sql)
是可以创建的,但是执行完之后报错:列名‘x'无效。

请教各位,这该怎么写?
------解决思路----------------------
改成

set @sql='update '+@tablename+ ' set con1=''x''+replicate(''0'',8-len(con2))+cast(con2 as nvarchar(10))'
 exec(@sql)