私が時々使用し、変更する特定の MySQL DB について、最近、いくつかのテーブルとストアド プロシージャに変更を加える必要がありました。この DB には、プロシージャが他のプロシージャを呼び出す場所があります。これらの変更されたプロシージャのパラメータを変更する必要があるすべての場所を探すのは面倒だったので、DB をダンプし、ダンプされたファイルでテキスト検索を実行して、すべての CALL ステートメントを見つけることにしました。
もっと簡単で良い方法はないでしょうか。SO でざっと検索し、解決策を Google で検索しましたが、答えは見つかりませんでした。呼び出しのリストを作成する方法や、それを簡単にするユーティリティがあるのではないかと思いますが、まだ解決策は見つかっていません。
何か案は?
ベストアンサー1
さて、私は最終的に次の解決策を見つけました:
INFORMATION_SCHEMA.ROUTINES テーブルには、ある SP から別の SP への CALL を追跡するときに非常に役立つ情報が含まれています。私は次のものを使用しました。
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_DEFINITION LIKE "%SomeProc%";
これにより、SomeProc を含むすべてのストアド プロシージャが取得されました。