Create Procedure Search @date1 datetime, --起始时间 @date2 datetime --终止时间 as declare @date1New datetime, @rq varchar(6), @i int , --记录循环次数 @s varchar(5000) --根据表多少 可以扩大它 set @rq=convert(varchar,@date1,12) --把时间格式化 比如2008-06-20 变成了080620 set @s='select * from sensor'+@rq --初始化 @s='select * from sensor080620' 这样第一个表就有了 set @i=datediff(d,@date1,@date2) --日期相减 while @i>0 begin --如果是非常重要的系统可以在这里加上该物理表是否存在的语句 --if exists(select * from dbo.sysobjects where --id = object_id(N'c') and OBJECTPROPERTY(id,N'IsUserTable')=1) --begin --SELECT '存在 ' --end set @date1New= dateadd(day,@i,@date1) set @rq=convert(varchar,@date1New,12) --如果是按月进行查询 就修改上面 set @s= @s+' union all select * from sensor'+@rq set @i=@i-1 --累加 end select @s --exec(@S) go exec Search '2008-06-20 00:11:11.000','2008-07-25 00:11:11.000' drop Procedure Search //sql/1214