MySQL 儲存過程刪除大表

2022-08-17 16:39:23 字數 1601 閱讀 4978

1、許可權問題

alter routine 編輯或刪除儲存過程

create routine 建立儲存過程

execute 建立儲存過程

2、儲存過程相關的一些命令

show procedure status\g  檢視資料庫中有哪些儲存過程

show procedure status

where db = '

db_name

'\g 檢視指定資料庫(db_name)中有哪些儲存過程

select name from mysql.proc where db = '

db_name

'; 檢視指定資料庫(db_name)中有哪些儲存過程

select routine_name from information_schema.routines where routine_schema = '

db_name

'; 檢視指定資料庫(db_name)中有哪些儲存過程

show create procedure dbname.sp_delete_bakhistory_new \g 檢視儲存過程的詳細內容

3、mysql 儲存過程刪除大表

delimiter //

create procedure `sp_delete_bigtable_60`( )

begin

declare v_id

int;

declare stopflag

int;

declare v_num

int;

declare cursor_id cursor

forselect id from bigtable where gmt_created60

day;

declare

continue handler for not found set stopflag=1

; open cursor_id;

repeat

fetch cursor_id into v_id;

begin

delete

from bigtable where id =v_id;

end;

set v_num=v_num+1;

if mod(v_num,100)=0

then

commit;

end if;

until stopflag = 1

end repeat;

close cursor_id;

end;

//delimiter ;

需要注意的是delimiter //和delimiter ;兩句,delimiter是分割符的意思,因為mysql預設以";"為分隔符,如果我們沒有宣告分割符,那麼編譯器會把儲存過程當成sql語句進行處理,則儲存過程的編譯過程會報錯,所以要事先用delimiter關鍵字申明當前段分隔符,這樣mysql才會將";"當做儲存過程中的**,不會執行這些**,用完了之後要把分隔符還原。

如果是用mysql的administrator管理工具時,可以直接建立,不再需要宣告。

mysql儲存過程表 mysql儲存過程和表命令

show procedure status 2.顯示某個儲存過程的詳細資訊 sp為儲存過程名稱 show create procedure sp 3.顯示當前庫中所有表 show tables 4.顯示某個表的建表語句 test為表名 show create table test 5.刪除儲存過程 ...

原!刪除表儲存過程

處理儲存過程 drop procedure if exists proc drop 2017msg tables 儲存過程名稱 delimiter create procedure proc drop 2017msg tables 儲存過程名稱 begin set tab year 17 開始年份 ...

mysql批量查詢 修改表, 批量刪除儲存過程

場景 有的時候需要批量更新部分有規律的表或者修改其屬性。處理方案 使用 函式concat 來生成批量執行sql語句,再執行批量sql語句。如 批量刪除所有表 select concat drop table table name,from information schema.tables wher...