2009-05-29 44 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";