在实际业务当中,有可能会有每个月末要生成某个表(products)的备份数据,这个时候我们可能每个月都要一个表来备份月末的数据状态,所以会想到生成的表名最好包含有日期信息,比如products202003,
create procedure proc_name()
begin
DECLARE nowtime char(10);
DECLARE table_name char(30);
SELECT DATE_FORMAT(NOW(),'%Y%m') into nowtime;
select CONCAT('products',nowtime) into table_name;
set @sqlStr=CONCAT('CREATE table if not exists ',table_name,' like products');
PREPARE stmt from @sqlStr;
EXECUTE stmt;
set @insertSql=CONCAT('INSERT INTO ',table_name,' select * from products');
PREPARE stmt2 from @insertSql;
EXECUTE stmt2;
end
该存储过程会生成一个表名为products再连接上年月的数据表,再从主表数据复制一份数据到当前表