Sql contact_cursor(指针) 和 语句中返回结果

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

posted on 2014-07-16 09:30  忙碌ing  阅读(767)  评论(0)    收藏  举报

导航