declare @name nvarchar(20)
DECLARE contact_cursor CURSOR FOR
select name from sysobjects where name like 'tb_message_%'
OPEN contact_cursor
FETCH NEXT FROM contact_cursor
into @name
WHILE @@FETCH_STATUS = 0
BEGIN
--------------------------------------------------------------------
print @name
declare
@dt1 nvarchar(20),
@dt2 nvarchar(20),
@sql nvarchar(1000)
,@tname nvarchar(25)
,@maxid nvarchar(10)
,@siteid nvarchar(10)
--获取当前时间
select @dt2 = Convert(varchar(20),GETDATE(),112)
--获取表中最小的时间
set @sql='select @dt1=convert(varchar(20),min(createtime),112) from '+@name
exec sp_executesql @sql,N'@dt1 nvarchar(20) output',@dt1 output
--拼接表名称
select @siteid=substring(@name, charindex('e_',@name)+2,len(@name)-charindex('e_',@name)-1)
set @tname = 'M'+@siteid+'_'+@dt1+'_'+@dt2
--复制数据到新表中
set @sql='select * into '+@tname+' from '+@name
exec(@sql)
--查询新表中最大的ID
set @sql='select @maxid=max(id) from '+@tname
exec sp_executesql @sql,N'@maxid nvarchar(10) output',@maxid output
print @sql
print @dt1
print @dt2
print @maxid
print @siteid
--删除老表中的数据,新表中 < 最大ID
--set @sql='delete from tb_message_6 where id<='+@maxid
set @sql='insert into MessageIndex(Name,TableName,mintime,maxtime)values('''+@name+''','''+@tname+''','''+@dt1+''','''+@dt2+''')'
exec(@sql)
--------------------------------------------------------------------------
FETCH NEXT FROM contact_cursor into @name
END
CLOSE contact_cursor
DEALLOCATE contact_cursor
GO