2009-05-29 3 views
11

私が使用して時折変更する特定のMySQL DBに対して、私は最近、いくつかのテーブルとストアドプロシージャにいくつかの変更を加えなければなりませんでした。このDBには、手続きが他の手続きを呼び出す場所があります。これらの変更されたプロシージャのパラメータを面倒なものに変更し、DBをダンプし、ダンプされたファイルをテキスト検索してすべてのCALL文を見つけることに頼っていました。すべてのMySQLストアドプロシージャコールを検索しますか?

これを行うためのより簡単な方法があるのだろうかと思います。私はここで何か大雑把に検索し、解決策を探そうとしましたが、本当に答えが見つかりませんでした。私は、コールのリストを作成する方法やそこにいくつかのユーティリティがそれをシンプルにする方法があると思うが、私はこの解決策を見つけられていない。

アイデア?

答えて

24

まあ、私は最終的には、以下のソリューションつまずい:

INFORMATION_SCHEMA.ROUTINESテーブルは別のSPからの呼び出しを追跡しようとしたときに非常に有用な情報を持っています。私は以下を使用しました:

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

これは、SomeProcを含むすべてのストアプロシージャを検索しました。

3

これはすばらしいです!私はこれを使用して私のMySQLデータベースのテキストを検索しています:

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

私はこれをより簡潔なリストであると判断しました。私はそれらを検索する際に役立つ '_sp'で私の格納されたprocsを全て修正します:

SELECT ROUTINE_NAME FROM information_schema.ROUTINES WHERE ROUTINE_NAME LIKE "%_sp"; 
関連する問題