日期:2014-05-16  浏览次数:20694 次

从不同的表读取数据的存储过程如何写
传入的数据都是查询的条件:开始时间(如2008-01-02 23:12:21)、结束时间(如2008-01-05 01:12:21),人名,性别等等
有很多表如:log20080101,log20080102,log20080103,log20080104,log20080105,log20080106.....
这样的话,需要查询的表有log20080102,log20080103,log20080104,log20080105四个表
需要在这些表内读取符合查询条件的数据存入logtemp表内,当logtemp表内数据达到1W条记录的时候就不再插入数据。
这个存储过程如何写呢?

------解决方案--------------------
SQL code

CREATE PROCEDURE `new_proc3`(IN tablename VARCHAR(50))
BEGIN
    set @sqltext:=concat('select * from ',tablename);    
    prepare stmt from @sqltext;
    EXECUTE stmt;
END;

------解决方案--------------------
回复4楼:不要考虑换库,要考虑在原来的数据库基础上怎么解决问题才是关键。
------解决方案--------------------
如查询时间从2007-12-21日开始,但表只有log20080101以后的,这样的话就很麻烦了。
=============
要靠表名判断这个好像有点麻烦。

可不可以建一个表,里面放已经有表的日期,然后判断这个表决定日期范围,在用上面的存储过程。