use ysxt_data
declare @lbname char(20),@zsbz char(4)set @lbname='T2002_yszb'
set @zsbz='预览'exec('delete from '+rtrim(@lbname)+' where zsbz='''+rtrim(@zsbz))+''''

解决方案 »

  1.   

    rtrim(@zsbz))是字符型的 要加'',动态sql中两个''表示一个'
      

  2.   

    use ysxt_data
    declare @lbname varchar(20),@zsbz varchar(4),@sqlstr varchar(8000)set @lbname='T2002_yszb'
    set @zsbz='预览'
    set @sqlstr='delete from '+rtrim(@lbname)+' where zsbz='''+rtrim(@zsbz))+''''exec(@sqlstr)
      

  3.   

    你的错误是:对字符型常数(预览)没有使用字符标识符,这个时候,SQL就会把你的字符当作变量(特别的是字段变量即字段名)看待,当然会报错了!上面已经给了你解决方法,我就不多说了。