Найти все вызовы хранимых процедур MySQL? - PullRequest
12 голосов
/ 29 мая 2009

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

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

Есть идеи?

Ответы [ 3 ]

27 голосов
/ 29 мая 2009

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

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

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

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

3 голосов
/ 16 мая 2011

Я нашел этот список более кратким. Я исправляю все мои сохраненные данные с помощью _sp, который помогает при их поиске:

SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_NAME LIKE "%_sp";
3 голосов
/ 11 февраля 2011

Ух ты, это круто! Я использую это для поиска текста в моей базе данных MySQL:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%search_string%";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...