create table #t (id int)alter table #t add c1 intdeclare @c varchar(10) set @c='c2' exec('alter table #t add '+@c+' int')select * from #t /* id c1 c2 ----------- ----------- ----------- */drop table #t
playwarcraft 的方法是可以的 但我如果加个循环,改成如下的样子说语法错了 create table #t (id int) declare @a int declare @b varchar(50) set @a=1while(@a<6) begin set @b='000'+@a exec('alter table #t add ' + @b+ ' int ') set @a=@a+1 end select * from #t drop table #t
潇洒老乌龟
exec( 'alter table #Main add ' + @sql_new ' + 'float ') 不过是临时表的话,上面的语句是不行的,要改为固定的表. exec( 'alter table Main add ' + @sql_new ' + 'float ')
----------------------------------------------------------------
上次學到一招,原來這樣是可以的,我本來也以為不行
set @c='c2'
exec('alter table #t add '+@c+' int')select * from #t
/*
id c1 c2
----------- ----------- -----------
*/drop table #t
但我如果加个循环,改成如下的样子说语法错了
create table #t (id int) declare @a int
declare @b varchar(50)
set @a=1while(@a<6)
begin
set @b='000'+@a
exec('alter table #t add ' + @b+ ' int ')
set @a=@a+1
end
select * from #t
drop table #t