对于我偶尔使用和修改的给定MySQL数据库,我最近必须对某些表和存储过程进行一些更改。此DB中有一些位置可以调用其他过程。我找到了在任何地方搜寻我需要修改这些修改过程的参数的麻烦的任务,并且使用转储数据库并对转储文件进行文本搜索以查找所有CALL语句。
我想知道是否有更好更简单的方法来做到这一点。我在这里做了一些粗略的搜索,并搜索了一个解决方案,但实际上没有找到答案。我怀疑有一种方法可以提出一个调用列表或一些实用程序使其变得简单,但我还没有找到这个解决方案。
有什么想法吗?
答案 0 :(得分:27)
好吧,我终于偶然发现了以下解决方案:
INFORMATION_SCHEMA.ROUTINES表包含的信息在尝试跟踪从一个SP到另一个SP的CALL时非常有用。我使用了以下内容:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%SomeProc%";
这会检索包含SomeProc的所有商店程序。
答案 1 :(得分:3)
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%search_string%";
答案 2 :(得分:3)
我发现这是一个更简洁的清单。我使用'_sp'对我的所有存储过程进行后期修复,这有助于搜索它们:
SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_NAME LIKE "%_sp";