create table column_test (t0 int)
declare @i int
declare @t varchar(2)
select @i=1
while @i<=5
begin
select @t='t'+ltrim(str(@i))
alter table column_test add  @t int --出错行
@i=@i + 1
end上面的代码执行完后系统提示:
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: '@t' 附近有语法错误。求助列变量是否支持的问题,或者有无其他解决办法.

解决方案 »

  1.   

    exec('alter table column_test add  '+@t+' int')
      

  2.   

    drop table column_test
    create table column_test (t0 int)
    declare @i int
    declare @t varchar(2)
    declare @sql varchar(8000)
    select @i=1
    while @i<=5
    begin
    select @t='t'+ltrim(str(@i))
    set @sql='alter table column_test add  '+rtrim(@t)+' int' --出错行
    exec(@sql)
    set @i=@i + 1
    end
      

  3.   

    create table column_test (t0 int)
    declare @i int
    declare @t varchar(2),@s varchar(5000)
    select @i=1
    while @i<=5
    begin
    select @t='t'+ltrim(str(@i))
    set @s='alter table column_test add '+ @t+' int' --出错行
    exec(@s)
    @i=@i + 1
    end
      

  4.   

    create table column_test (t0 int)
    declare @i int
    declare @t varchar(2)
    select @i=1
    while @i<=5
    begin
    select @t='t'+ltrim(str(@i))
    Select @t
    EXEC('alter table column_test add ' +  @t +' int') --出错行
    Select @i=@i + 1
    end
      

  5.   

    -----------trycreate table column_test (t0 int)
    declare @i int
    declare @t varchar(2)
    declare @sql varchar(1000)
    select @i=1
    while @i<=5
    begin
    select @t='t'+ltrim(str(@i))
    @sql='alter table column_test add ' + @t  +' int' 
                      exec(@sql)
    @i=@i + 1
    end
      

  6.   

    @i=@i + 1
    也要改為
    Select @i=@i + 1