mysql 数据库,在存储过程中用变量名作为表名

    在实际业务当中,有可能会有每个月末要生成某个表(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再连接上年月的数据表,再从主表数据复制一份数据到当前表

猜你喜欢

转载自www.cnblogs.com/zhengyixin/p/12502395.html