2009-05-29 9 views
11

Dla danego DB MySQL, którego używam i modyfikuję sporadycznie, musiałem ostatnio dokonać pewnych zmian w niektórych tabelach i procedurach przechowywanych. Są miejsca w tym projekcie, w których procedury wywołują połączenia z innymi procedurami. Stwierdziłem, że zadaniem polowania wszędzie, gdzie potrzebowałem zmodyfikować parametry tych zmodyfikowanych procedur, było kłopotliwe i uciekałem się do zrzucania bazy danych i przeprowadzania wyszukiwania tekstowego po zrzuconym pliku, aby znaleźć wszystkie instrukcje CALL.Znajdź wszystkie wywołania procedury składowanej w MySQL?

Zastanawiam się, czy istnieje lepszy i łatwiejszy sposób na zrobienie tego. Zrobiłem pobieżne wyszukiwanie SO, a także szukałem w Google rozwiązania, ale tak naprawdę nie znalazłem odpowiedzi. Podejrzewam, że istnieje sposób na wymyślenie listy wykonanych połączeń lub jakiegoś narzędzia, które sprawia, że ​​jest to proste, ale nie znalazłem tego rozwiązania.

Wszelkie pomysły?

Odpowiedz

24

No, ale w końcu natknął się następujące rozwiązanie:

tabela INFORMATION_SCHEMA.ROUTINES posiada informacje, które mogą być bardzo przydatne, gdy próbuje wytropić wywołań od jednego do drugiego SP. Użyłem następujące:

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

I to odzyskało wszystkie procedury składowania, które zawierały SomeProc.

3

Wow, to jest niesamowite! Używam tego aby wyszukać tekst w mojej bazy danych MySQL:

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

Uważam, że jest to lista bardziej zwięzłe. Post-fix wszystkie moje przechowywane proci z "_sp", który pomaga podczas wyszukiwania ich:

SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_NAME LIKE "%_sp"; 
Powiązane problemy