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

posted @   smellycats  阅读(717)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示