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再连接上年月的数据表,再从主表数据复制一份数据到当前表

浙公网安备 33010602011771号