declare @tem_name varchar(50)  --临时表名
declare @content varchar(4000) --列名(内容)
declare @col   varchar(20)  --列名 
declare @key varchar(20) --关键词
exec( 'update '+@tem_name+' set content=replace('+
@body+','+@flag+','+@col1+')')
临时表有,有字段列  content :内容列实现: 该临时表中,content列如果含有关键词,将该关键词替换成其他内容。
 @col 是用于替换的新内容,它是该临时表的一个字段列
 @key 代表关键词,被替换的内容执行报错:&附近有语法错误我不用参数测试:不用参数直接 exec('update tem_1 set content =replace(''***.....'',''haha'',col1)')
其中 tem_1是临时表的名称,content,col1 是tem_1的列
结果执行成功,没有错误为什么使用参数,就错误???
                  

解决方案 »

  1.   


    --试试????
    exec( 'update '+@tem_name+' set content=replace('''+
    @body+''','''+@flag+''','''+@col1+''')')
      

  2.   

    你的@body 在哪裡聲明了?
      

  3.   

    declare @tem_name varchar(50)  --临时表名
    declare @content varchar(4000) --列名(内容)
    declare @col   varchar(20)  --列名 
    declare @key varchar(20) --关键词
    declare @sql varchar(8000)
    set @tem_name='tb'
    set @content='id'
    set @col='11122'
    set @key='bb'
    set @sql='update '+@tem_name+' set [content]=replace('+@content+','''+@key+''','''+@col+''')'
    select @sql
    /*update tb set [content]=replace(id,'bb','11122')*/
    exec('update '+@tem_name+' set [content]=replace('''+@content+''','''+@key+''','''+@col+''')')
      

  4.   

    你先print()一下看語句哪裡錯了。
      

  5.   

    Thank you !!
    加上引号后,错误没有了
    都把我搞糊涂了,使用参数一般不需要加引号,到底是什么时候还是要加引号呢???
      

  6.   


    exec( 'update '+@tem_name+' set content=replace('+
    @content+','+@key+','+@col1+')')
    不好意思,这句--拷贝错误--
    1楼,3楼的朋友--说对了,错误的确是没有加引号