改成  set @sql = 'update AthleteInfor set ' +' item'+Rtrim(@num)+'='''+Rtrim(@itemname)+''' where AthleteNum='''+Rtrim(@athletenum)+''''

解决方案 »

  1.   


    CREATE PROCEDURE sm_test 
      @athletenum char(10),
      @itemname varchar(50),
      @num int -- 根据num的值(1,2...)来确定更新列item1,item2...
    AS
       declare @sql char(100)
       set @sql = 'update AthleteInfor set ' +' item'+Rtrim(@num)+'='''+Rtrim(@itemname)+''' where AthleteNum='''+Rtrim(@athletenum)+'''' --Rtrim(@itemname)前后的单引号均改为3个
       exec(@sql)
    GO
      

  2.   

    因为你查的是字符串,字符串要加上单引号的。分别执行下面两段代码。Declare   @athletenum char(10),
      @itemname varchar(50),
      @num int, -- 根据num的值(1,2...)来确定更新列item1,item2...
      @sql char(100)
    Set @athletenum='' --给上值
    Set @itemname='' --给上值
    Set @num=1 --给上值
    set @sql = 'update AthleteInfor set ' +' item'+Rtrim(@num)+'='+Rtrim(@itemname)+' where AthleteNum='''+Rtrim(@athletenum)+''''
    Select @sqlDeclare   @athletenum char(10),
      @itemname varchar(50),
      @num int, -- 根据num的值(1,2...)来确定更新列item1,item2...
      @sql char(100)
    Set @athletenum='' --给上值
    Set @itemname='' --给上值
    Set @num=1 --给上值
    set @sql = 'update AthleteInfor set ' +' item'+Rtrim(@num)+'='''+Rtrim(@itemname)+''' where AthleteNum='''+Rtrim(@athletenum)+''''
    Select @sql看看得出来的SQL语句,你就会明白了。