ALTER proc [dbo].[gb] @table_name varchar(8) ASdeclare @sql varchar(100)
set @sql='update' + @table_name +' set id=123456 where (id=123)'
exec(@sql)exec gb aa请问@sql词句改怎么拼接

解决方案 »

  1.   


    ALTER proc [dbo].[gb] @table_name varchar(8) ASdeclare @sql varchar(100)
    set @sql='update' + @table_name +' set id='+'123456'+' where (id='+'123'+')'
    exec(@sql)exec gb aa
      

  2.   

    ALTER proc [dbo].[gb] @table_name varchar(8) ASdeclare @sql varchar(100)
    set @sql='update' + @table_name +' set id='+123456+' where (id=123)'
    exec(@sql)exec gb aa
      

  3.   

    ALTER proc [dbo].[gb] @table_name varchar(8) ASdeclare @sql varchar(100) --改成Nvarchar(200)
    set @sql='update' + @table_name +' set id=123456 where (id=123)'
    exec(@sql) --最好exec sp_executesql @sql with recompileexec gb aa
      

  4.   

    你自己PRINT @SQL看看差什么 就去拼接
      

  5.   

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    ALTER proc [dbo].[gb] @table_name varchar(8) ASdeclare @sql Nvarchar(200)
    --set @sql='update' + @table_name +' set id='+'123456'+' where (id='+'123'+')'
    --set @sql='update' + @table_name + 'set id=' + '123456' + ' where (id=' + '123' + ')'
    --set @sql='update' + @table_name +' set id=123456 where (id=123)'
    set @sql='update' + @table_name +' set id='+'123456'+' where (id='+'123)'
    exec sp_executesql @sql with recompileexec gb aa
    消息 102,级别 15,状态 1,第 1 行
    '=' 附近有语法错误。
      

  6.   

    set @sql='update' + @table_name +' set id= 123456  where id=123'--如果id是(int)

    set @sql='update' + @table_name +' set id= '''123456'''  where (id='''123''')'--id是Varchar
      

  7.   

    搞错
    set @sql='update' + @table_name +' set id= ''123456'' where (id=''123'')'--id是Varchar
      

  8.   

    问题解决了,正解  ALTER proc [dbo].[gb] @table_name varchar(8) ASdeclare @sql Nvarchar(1000) 
    set @sql='update ' + @table_name +' set id='+'123456 '+' where id='+'123'
    exec sp_executesql @sql with recompileexec gb aafredrickhu 的方法不错。