表 tab
字段
id  a   b  
1   2   3
2   4   5执行存储过程
 exec xiaohao '3' 得到结果 是  (3 只是个参数 输入 数字多少  就增加多少列)。
id  a  b  a1  a2  a3
1   2  3
2   4  5 谁知道怎么写哦,在存储过程里面怎么给 表 增加列。
SQL、存储过程、SQL增加列

解决方案 »

  1.   

    这个需要动态拼个SQL语句。循环串个字符串。
    只说思路!
      

  2.   

    create proc p_test(@column int)
    as
    begin
    declare @sql nvarchar(max),@num int
    set @num=1
    set @sql='declare @t table(id int,a int,b int'
    while @num<=@column begin
    set @sql=@sql+',a'+convert(nvarchar(10),@num)+' int'
    set @num=@num+1
    end
    set @sql=@sql+')'
    set @sql=@sql+' insert into @t(id,a,b) select id,a,b from tab '
    set @sql=@sql+' select * from @t'
            exec(@sql)
    end
      

  3.   

    create proc xiaohao
    @n varchar(10)
    as
    begin
    declare @s varchar(255)
    declare @i int
    set @i=1
    set @s='select id,a,b' while @i<=cast(@n as int)
    begin
    set @s=@s+','+char(39)+char(39)+' as a'+cast(@i as varchar(5))
    set @i=@i+1
    end
    set @s=@s+'  from tab'
    exec (@s)
    end