日期:2014-05-17  浏览次数:20513 次

SQL 存储过程会的说下哦,简单查询

表 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增加列

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


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


------解决方案--------------------
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

------解决方案--------------------
动态拼接sql