ストアドファンクションの内容を確認する方法
スポンサードリンク
MySQL に登録されたストアドファンクションの内容を確認するには次の2つの方法があります。
ストアドファンクションではなく、ストアドプロシージャの一覧を確認したい場合はストアドプロシージャの内容を確認する方法を参考にしてください。
SHOW CREATE FUNCTION で内容を確認する方法
SHOW CREATE FUNCTION を実行すると、 MySQL に登録されているストアドファンクションの内容を参照することができます。
書式
SHOW CREATE FUNCTION 参照するストアドファンクションの名前
但し、この方法だと実行結果で表示されるカラム数が多く、通常のコンソールだと表示が崩れるので \G オプションを使用します。
尚、実装したコード部分だけ参照したい場合は information_schema の ROUTINES テーブルを直接参照します。
mysql> SHOW CREATE FUNCTION test1 \G *************************** 1. row *************************** Function: test1 sql_mode: NO_ENGINE_SUBSTITUTION Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `test1`(prmInt INT) RETURNS int(11) BEGIN RETURN (1234 + prmInt); END character_set_client: cp932 collation_connection: cp932_japanese_ci Database Collation: cp932_japanese_ci 1 row in set (0.00 sec)
information_schema の ROUTINES テーブルで定義部分のみ確認する方法
MySQL の information_schema には ROUTINES というテーブルがあり、ここに MySQL に登録されているストアドプロシージャとストアドファンクションの全ての情報が登録されています。この ROUTINES テーブルは一般のテーブルと同じく SELECT 文で内容を抽出可能です。
ストアドファンクションを抽出したい場合は、 WHERE 句で ROUTINE_TYPE を 'FUNCTION に絞り込み、ROUTINE_NAME で参照したいファンクションの名前を指定します。今回の例では test1 という名前のストアドファンクションの内容を確認してみます。
SQLサンプル
SELECT ROUTINE_DEFINITION FROM information_schema.ROUTINES WHERE ROUTINE_NAME = 'test1' /* 参照するストアドファンクションの名前 */ AND ROUTINE_TYPE = 'FUNCTION'; /* 同名のプロシージャを排除 */
実行例
mysql> SELECT -> ROUTINE_DEFINITION -> FROM -> information_schema.ROUTINES -> WHERE -> ROUTINE_NAME = 'test1' /* 参照するストアドファンクションの名前 */ -> AND ROUTINE_TYPE = 'FUNCTION'; /* 同名のプロシージャを排除 */ +-------------------------------------+ | ROUTINE_DEFINITION | +-------------------------------------+ | BEGIN RETURN (1234 + prmInt); END | +-------------------------------------+ 1 row in set (0.01 sec)
ちなみにストアドファンクションの引数の情報は information_schema の PARAMETERS テーブルに格納されていますが、SHOW CREATE FUNCTION での確認の方が分かりやすいので、ここでは特に説明しません。
スポンサードリンク