mysql 儲存過程及游標使用,

2022-05-30 13:09:12 字數 1483 閱讀 5348

因為資料表的資料量太大,每天定時執行分表的儲存過程,時間長了分表數量過多,需要定期刪除分表,先建立儲存過程,之後設定定時事件去執行儲存過程

create

procedure

`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 if

exists

`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...