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
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
不加exec试了吗
alter table #TEMP add [FLD3] int
试一下
把你的所有语句转换成utf-8试一下
可是还是不行的。
可是我还不会转换为utf-8 ,多谢指教!
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这样试一下,呵
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
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?
TO lxysjl(流星雨): 这是在构建一个procedure中,加了GO就表示procedure结束了,可事实上我还没有结束。
TO lanshen(能量建造者) :同上。
TO cqlyzz(云卷云舒) :你是张洪举吗?
TO rea1gz(冒牌realgz V0.2):你的方法有效!可是呢,在我真正应用的update里,要用到好多变量,这样的话要先构建一个字串,而不能直接代入变量。不过这的确是有效的方法之一。问题的本质是,出现这个问题的原因是什么,总得有一个理论上的依据啊。糊里糊涂.....今天下午我被逼急了,用了另一个方法,就是把最大可能需要的字段先统统加上。在最后,再把不需要的字段drop掉。(本来在procedure里,会依据不同的情形加上不同的字段的。)
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?