2011-02-04 25 views
0

我想寫一個簡單的存儲過程,這將清除一些表內容在當前數據庫 - 通過匹配對錶中的INFORMATION_SCHEMA列表中的前綴我這樣做:如何在存儲過程中識別當前數據庫?

delimiter $$ 
create procedure local_flush_cache(db varchar(255)) 
begin 

select @str_sql:=concat('delete from ',group_concat(table_name)) 
from information_schema.tables 
where table_schema=db and table_name like 'cache_%'; 

prepare stmt from @str_sql; 

execute stmt; 

drop prepare stmt; 

end$$ 
delimiter ; 

我希望能夠刪除數據庫參數,並使該功能在當前活動的數據庫上工作。

我想我還需要能夠識別數據庫尚未被選中並輸出錯誤(以防止意外刷新所有數據庫中的所有緩存表)。

回答

4

考慮到該過程綁定到數據庫,當前是被調用的,除非您執行CALL db.proc()

但是,如果你真的想選擇一個,你可以the DATABASE() function

where table_schema=database() and table_name like 'cache_%'; 
+0

感謝 - 現在我可以在我建立查詢固定我的語法錯誤工作;) – HorusKol 2011-02-04 00:47:00

相關問題