发布网友 发布时间:2022-04-15 00:16
共2个回答
热心网友 时间:2022-04-15 01:45
ALTER proc [dbo].[up_addDayTable]热心网友 时间:2022-04-15 03:03
从表Sys_Factor中取出Ftype = @ttype的记录中的Ffield字段,并用取到的字段值作为列名创建一张新表@tname追问哦,可是能不能详细点呢?,因为我对存储过程不是很了解追答--修改存储过程up_addDayTable
ALTER proc [dbo].[up_addDayTable]
--传入2个参数
@tname varchar(100), @ttype int
as
--定义变量
declare @sqlText varchar(5000);
declare @i int;
declare @count int;
--给变量@i赋值
set @i = 1;
--创建一个有2字段的临时表,主键为自增类型
create table #tmpTable (tid int identity(1,1) not null primary key , tname varchar(20) null);
--从表Sys_Factor中搜出Ftype为@ttype的记录,将Ffield字段的值插入临时表#tmpTable
insert into #tmpTable (tname)select Ffield from Sys_Factor where Ftype = @ttype ;
--获取临时表#tmpTable中的记录条数
select @count = count(1) from #tmptable;
--给变量@sqlText赋值,赋值语句为创建一个名为@tname的表,主键为HID,自增,
--然后依次读出临时表#tmpTable中的tname字段的值赋给变量@tmpstr,并以变量@tmpstr_min,@tmpstr_avg,@tmpstr_max,@tmpstr_sum作为新表@tname的字段名
set @sqlText = ' create table '+@tname+'(Hid bigint primary key identity(1,1) not null,Htime datetime null ';
--从这里开始循环
while (@i <= @count)
begin
--定义变量
declare @tmpstr varchar(20);
--取出tname的值赋给@tmpstr
select @tmpstr= tname from #tmptable where tid = @i;
--构建表@tname的字段
set @sqlText = @sqlText + ','+@tmpstr+'_min float null,'+@tmpstr+'_avg float null,'+@tmpstr+'_max float null,'+@tmpstr+'_sum float null' ;
set @i=@i+1;
--这里结束
end
--删除临时表#tmpTable
delete from #tmpTable;
drop table #tmpTable;
set @sqlText =@sqlText+');' ;
--执行建表语句
exec (@sqlText);