2009-05-29 6 views
11

Pour une base de données MySQL donnée que j'utilise et que je modifie parfois, j'ai dû apporter quelques modifications à certaines tables et procédures stockées. Il y a des endroits dans cette base de données où les procédures appellent d'autres procédures. J'ai trouvé la tâche de traquer partout où j'avais besoin de modifier les paramètres de ces procédures modifiées et j'ai eu recours à la suppression de la base de données et à une recherche de texte sur le fichier sauvegardé pour trouver toutes les instructions CALL. Je me demande s'il existe une façon meilleure et plus facile de le faire. J'ai fait quelques recherches superficielles ici sur SO et aussi googlé pour une solution, mais n'a vraiment pas trouvé de réponse. Je soupçonne qu'il existe un moyen de trouver une liste des appels faits ou un utilitaire qui simplifie les choses, mais je n'ai pas trouvé cette solution.Trouver tous les appels de procédure stockée MySQL?

Des idées?

Répondre

24

Eh bien, je me suis finalement tombé sur la solution suivante:

Le tableau INFORMATION_SCHEMA.ROUTINES contient des informations qui peuvent être très utiles lorsque vous essayez de traquer les appels d'un SP à un autre. J'ai utilisé ce qui suit:

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

Et ceci a récupéré toutes les procédures de magasin qui contenaient SomeProc.

3

Wow, c'est génial! J'utilise ceci pour rechercher du texte dans ma base de données MySQL:

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

Je trouve que ce soit une liste plus succincte. Je post-corrige tous mes proc stockés avec '_sp' ce qui aide lors de la recherche pour eux:

SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_NAME LIKE "%_sp"; 
Questions connexes