因為資料表的資料量太大,每天定時執行分表的儲存過程,時間長了分表數量過多,需要定期刪除分表,先建立儲存過程,之後設定定時事件去執行儲存過程
createprocedure
`sp_droptables`()
begin
declare t_name varchar(64
) ;
declare isfinished int
default
false;
declare log_table_list cursor
for (select table_name from information_schema.tables where table_schema='庫名
'and table_name like
'table_%
') ;
declare
continue handler for
not found set isfinished=
true;
open
log_table_list;
repeat
fetch log_table_list into
t_name;
if isfinished = false then
ifdatediff(now(),date_format(replace(t_name,'
table_
',''),'
%y-%m-%d
') )>
30then
set@sqltext
=concat('
drop table
',t_name,';'
);
prepare drop_table from
@sqltext
;
execute
drop_table ;
endif
;
endif
; until isfinished
endrepeat;
close
log_table_list;
end
儲存過程建立成功之後,設定定時事件
drop event ifexists
`e_droptables`;
create
event `e_droptables`
onschedule
every '1
'day starts '
2019-12-26 03:00:00'on
completion preserve
do begin
call sp_droptables;
end
mysql儲存過程 游標使用
1.什麼是游標 需求 編寫儲存過程,使用游標,把uid為偶數的記錄逐一更新使用者名稱。delimiter create procedure testf in my userid varchar 32 begin declare stopflag int default 0 declare my un...
mysql 游標及儲存過程游標的使用 源自技術
乙個完整的mysql游標使用例子 定義本地變數 declare o varchar 128 定義游標 declare ordernumbers cursor for select callee name from account tbl where acct timeduration 10800 d...
MySql 儲存過程游標使用示例
drop procedure if exists pro removebillremindbyuserid create procedure pro removebillremindbyuserid userid int begin declare ts varchar 500 declare cn...