2009-05-29 1 views
11

Per un dato DB MySQL che uso e modifica occasionalmente ho dovuto apportare alcune modifiche ad alcune tabelle e stored procedure. Ci sono posti in questo DB in cui le procedure effettuano chiamate ad altre procedure. Ho trovato il compito di cercare ovunque che dovessi modificare i parametri in queste procedure modificate senza problemi e ho fatto ricorso al dumping del DB e facendo una ricerca testuale sul file scaricato per trovare tutte le istruzioni CALL.Trova tutte le chiamate di stored procedure MySQL?

Mi chiedo se c'è un modo migliore e più semplice per farlo. Ho fatto qualche ricerca superficiale qui su SO e anche cercato su Google una soluzione, ma in realtà non ho trovato una risposta. Sospetto che ci sia un modo per creare una lista delle chiamate fatte o qualche utilità là fuori che lo renda semplice, ma non ho trovato questa soluzione.

Qualche idea?

risposta

24

Beh, finalmente ho inciampato sulla seguente soluzione:

La tabella INFORMATION_SCHEMA.ROUTINES dispone di informazioni che può essere molto utile quando si cerca di rintracciare le chiamate da un SP a un altro. Ho utilizzato quanto segue:

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

E questo ha recuperato tutte le procedure di archiviazione che contenevano SomeProc.

3

Wow, è fantastico! Sto usando questo per cercare il testo nel mio database MySQL:

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

ho trovato questo per essere un elenco più succinta. Ho post-fix tutti i miei proc memorizzati con '_sp' che aiuta quando li cerco:

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