2009-05-29 40 views
11

對於偶爾使用和修改的給定MySQL DB,我不得不對最近對某些表和存儲過程進行一些更改。在這個DB中有一些地方可以調用其他過程。我發現在任何地方搜尋我需要修改這些修改過程的參數很麻煩,然後採用轉儲數據庫並在轉儲的文件上進行文本搜索來查找所有的CALL語句。查找所有MySQL存儲過程調用?

我想知道是否有更好更簡單的方法來做到這一點。我在這裏做了一些粗略的搜索,也搜索了一個解決方案,但實際上沒有找到答案。我懷疑有一種方法可以列出所做的調用列表或一些實用程序,這使得它很簡單,但我還沒有找到這個解決方案。

任何想法?

回答

24

好了,我終於偶然發現了以下解決方案:

的INFORMATION_SCHEMA.ROUTINES表有試圖追查從一個SP到另一個呼叫時,可以是非常有用的信息。我使用了以下內容:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%SomeProc%"; 

而且這個檢索到所有包含SomeProc的存儲過程。

3

哇,這太棒了!我正在使用它來搜索我的MySQL數據庫中的文本:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%search_string%"; 
3

我發現這是一個更簡潔的列表。我用'_sp'後綴修復了所有存儲的特效,這有助於搜索它們:

SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_NAME LIKE "%_sp";