create table #TEMP (FLD1 char(10),FLD2 char(10))
insert into #TEMP (FLD1,FLD2) values ('xxx','yyyy')
exec ('alter table #TEMP add FLD3 int')
select * from #temp
update #TEMP set FLD3=6789
drop table #TEMP
GO

解决方案 »

  1.   

    alter table #TEMP add FLD3 int
    不加exec试了吗
    alter table #TEMP add [FLD3] int
    试一下
    把你的所有语句转换成utf-8试一下
      

  2.   

    谢谢 sankis、btut2004二位的回答。
    可是还是不行的。
    可是我还不会转换为utf-8 ,多谢指教!
      

  3.   

    create procedure TEST
    AScreate table #TEMP (FLD1 char(10),FLD2 char(10))
    insert into #TEMP (FLD1,FLD2) values ('xxx','yyyy')
    exec ('alter table #TEMP add FLD3 int')
    go
    update #TEMP set FLD3=6789
    drop table #TEMP
    GOexec TEST
    drop procedure TEST这样试一下,呵
      

  4.   

    create table #TEMP (FLD1 char(10),FLD2 char(10))
    insert into #TEMP (FLD1,FLD2) values ('xxx','yyyy')
    exec ('alter table #TEMP add FLD3 int')
    GO                    //这个GO不能省
    update #TEMP set FLD3=6789
    drop table #TEMP
    GO
      

  5.   

    create procedure TEST
    AScreate table #TEMP (FLD1 char(10),FLD2 char(10))
    insert into #TEMP (FLD1,FLD2) values ('xxx','yyyy')
    exec ('alter table #TEMP add FLD3 int')
    exec ('update #TEMP set FLD3=6789')           --
    drop table #TEMP
    GOexec TEST
    drop procedure TEST
    ok?
      

  6.   

    想不到这么多朋友关注此问题,谢了谢了!
    TO  lxysjl(流星雨): 这是在构建一个procedure中,加了GO就表示procedure结束了,可事实上我还没有结束。
    TO  lanshen(能量建造者) :同上。
    TO cqlyzz(云卷云舒) :你是张洪举吗?
    TO rea1gz(冒牌realgz V0.2):你的方法有效!可是呢,在我真正应用的update里,要用到好多变量,这样的话要先构建一个字串,而不能直接代入变量。不过这的确是有效的方法之一。问题的本质是,出现这个问题的原因是什么,总得有一个理论上的依据啊。糊里糊涂.....今天下午我被逼急了,用了另一个方法,就是把最大可能需要的字段先统统加上。在最后,再把不需要的字段drop掉。(本来在procedure里,会依据不同的情形加上不同的字段的。)
      

  7.   

    其实这样子:create procedure TEST
    ASdeclare @updatevar1 int
    declare @updatevar2 varchar(20)   --两个参数示例
    set @updatevar1=1
    set @updatevar2='Just a Test'create table #TEMP (FLD1 char(10),FLD2 char(10))
    insert into #TEMP (FLD1,FLD2) values ('xxx','yyyy')
    exec ('alter table #TEMP add FLD3 int,FLD4 varchar(20)')
    declare @sql nvarchar(2000)
    set @sql=N'update #TEMP set FLD3=@Var1,FLD4=@Var2'
    exec sp_executesql  @sql,N'@Var1 int,@Var2 varchar(20)',@updatevar1,@updatevar2select * from #TEMPdrop table #TEMP
    GOexec TEST
    drop procedure TEST
    ok?