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

时间:2011-10-19 17:53:01

标签: mysql mysqli mysqldump

  

可能重复:
  procedure in mysql

有人可以帮帮我 我是mysql的新手 创建一个存储过程,从mysql

中我的数据库中的所有表中删除30天以前的日期列中的行

2 个答案:

答案 0 :(得分:0)

您可以这样做:

DELETE FROM MyTable
WHERE MyTable.MyDate < SUBDATE(@NOW, 30)

答案 1 :(得分:0)

分隔符// create procedure delete_data(schemata varchar(25)) 开始 DECLARE tab_name varchar(64); DECLARE完成了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;

- 从tab_name删除PRS_DATE&lt; now() - 间隔1个月;

设置@x = concat('delete from',tab_name,'where','PRS_DATE \&lt;','now() - interval 1 month');    选择@x;
    从@x准备stmt2;         执行stmt2;     deallocate准备stmt2;

END LOOP;

CLOSE table_name_cur; 结束 // 分隔符;