首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建存储过程,从数据库中的所有表中删除30天以上的日期列中的行

问创建存储过程,从数据库中的所有表中删除30天以上的日期列中的行
EN

Stack Overflow用户
提问于 2011-10-19 17:53:00
回答 2查看 1.7K关注 0票数 1

可能重复:

procedure in mysql

请帮助我创建一个存储过程,从mysql数据库中的所有表中删除30天以上的日期列中的行。

EN

回答 2

Stack Overflow用户

发布于 2011-10-19 17:56:08

你可以这样做:

代码语言:javascript
复制
DELETE FROM MyTable
WHERE MyTable.MyDate < SUBDATE(@NOW, 30)
票数 0
EN

Stack Overflow用户

发布于 2011-10-25 16:11:08

代码语言:javascript
复制
delimiter //
create procedure delete_data(schemata varchar(25))
Begin
DECLARE  tab_name varchar(64);
DECLARE  done TINYINT DEFAULT 0;

DECLARE table_name_cur  cursor for select table_name from information_schema.TABLES where table_schema=schemata;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;


  OPEN  table_name_cur;
  read_loop: LOOP
    FETCH  table_name_cur INTO tab_name;

    IF done THEN LEAVE read_loop; END IF;
   --     delete from tab_name where  PRS_DATE <  now() - interval 1 month;

set @x =concat('delete from ', tab_name,' where ','PRS_DATE \< ', 'now() - interval 1 month'); 
   select @x;    
    prepare stmt2 from @x;
        execute stmt2;
    deallocate prepare stmt2; 

    END LOOP;
  CLOSE table_name_cur;
END //
delimiter ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7825758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档