Найти все вызовы хранимой процедуры 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";