Найти все вызовы хранимой процедуры MySQL?

Для данной базы данных MySQL, которую я иногда использую и изменяю, я должен был внести некоторые изменения в некоторые таблицы и хранимые процедуры. В этой БД есть места, где процедуры совершают вызовы на другие процедуры. Я нашел задачу охоты повсюду, что мне нужно было модифицировать параметры для этих измененных процедур, а также прибегнуть к демпингу БД и выполнить текстовый поиск по выгруженному файлу, чтобы найти все инструкции CALL.

Мне интересно, есть ли лучший и простой способ сделать это. Я сделал некоторый беглый поиск здесь на SO, а также googled для решения, но на самом деле не нашел ответа. Я подозреваю, что есть способ придумать список сделанных звонков или какую-то полезность, которая делает его простым, но я не нашел это решение.

Любые идеи?

Ответ 1

Ну, я, наконец, наткнулся на следующее решение:

В таблице INFORMATION_SCHEMA.ROUTINES есть информация, которая может быть очень полезна при попытке отследить CALL с одного SP на другой. Я использовал следующее:

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

И это восстановило все процедуры хранения, содержащие SomeProc.

Ответ 2

Ничего себе это потрясающе! Я использую это для поиска текста в моей базе данных 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";