查找所有MySQL存储过程调用?

its*_*att 12 mysql stored-procedures

对于我偶尔使用和修改的给定MySQL数据库,我最近必须对某些表和存储过程进行一些更改.此DB中有一些位置可以调用其他过程.我找到了在任何地方搜寻我需要修改这些修改过程的参数的麻烦的任务,并且使用转储数据库并对转储文件进行文本搜索以查找所有CALL语句.

我想知道是否有更好更简单的方法来做到这一点.我在这里做了一些粗略的搜索,并搜索了一个解决方案,但实际上没有找到答案.我怀疑有一种方法可以提出一个调用列表或一些实用程序使其变得简单,但我还没有找到这个解决方案.

有任何想法吗?

its*_*att 28

好吧,我终于偶然发现了以下解决方案:

在尝试跟踪从一个SP到另一个SP的CALL时,INFORMATION_SCHEMA.ROUTINES表具有非常有用的信息.我使用了以下内容:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%SomeProc%";
Run Code Online (Sandbox Code Playgroud)

并且这检索了包含SomeProc的所有商店过程.


Luc*_*cas 5

哇这太棒了!我正在使用它在我的 MySQL 数据库中搜索文本:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%search_string%";
Run Code Online (Sandbox Code Playgroud)


icc*_*c97 5

我发现这是一个更简洁的列表。我用“_sp”后修复了所有存储过程,这在搜索它们时很有帮助:

SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_NAME LIKE "%_sp";
Run Code Online (Sandbox Code Playgroud)