ストアドプロシージャの一覧を確認する方法
スポンサードリンク
MySQL に登録されたストアドプロシージャの一覧を確認するには次の2つの方法があります。
ストアドプロシージャではなく、ストアドファンクションの一覧を確認したい場合はストアドファンクションの一覧を確認する方法を参考にしてください。
SHOW PROCEDURE STATUS で一覧を確認する方法。
SHOW PROCEDURE STATUS を実行すると、 MySQL に登録されている全てのストアドプロシージャを一覧で確認することができます。
但し、この方法だと実行結果で表示されるカラム数が多く、通常のコンソールだと表示が崩れるので \G オプションを使用します。
尚、表示する項目を絞りこみたい場合は information_schema の ROUTINES テーブルを直接参照します。
mysql> SHOW PROCEDURE STATUS \G *************************** 1. row *************************** Db: test Name: test1 Type: PROCEDURE Definer: root@localhost Modified: 2014-12-08 01:40:31 Created: 2014-12-08 01:40:31 Security_type: DEFINER Comment: character_set_client: cp932 collation_connection: cp932_japanese_ci Database Collation: cp932_japanese_ci *************************** 2. row *************************** Db: test Name: testproc1 Type: PROCEDURE Definer: root@localhost Modified: 2014-12-08 01:25:07 Created: 2014-12-08 01:25:07 Security_type: DEFINER Comment: character_set_client: cp932 collation_connection: cp932_japanese_ci Database Collation: cp932_japanese_ci *************************** 3. row *************************** Db: test Name: testproc2 Type: PROCEDURE Definer: root@localhost Modified: 2014-12-08 00:39:10 Created: 2014-12-08 00:39:10 Security_type: DEFINER Comment: character_set_client: cp932 collation_connection: cp932_japanese_ci Database Collation: cp932_japanese_ci 3 rows in set (0.02 sec) mysql>
information_schema の ROUTINES テーブルで一覧を確認する方法
MySQL の information_schema には ROUTINES というテーブルがあり、ここに MySQL に登録されているストアドプロシージャとストアドファンクションの全ての情報が登録されています。この ROUTINES テーブルは一般のテーブルと同じく SELECT 文で内容を抽出可能です。
ストアドプロシージャのみ抽出したい場合は、 WHERE 句で ROUTINE_TYPE を 'PROCEDURE' に絞り込みます。今回の例ではストアドプロシージャの名前の一覧と、そのプロシージャがどのデータベースに登録されているのかを確認してみます。
SQLサンプル(抽出カラムは必要に応じて変更)
SELECT ROUTINE_SCHEMA, /* ストアドプロシージャがあるデータベース */ ROUTINE_NAME, /* ストアドプロシージャの名前 */ ROUTINE_TYPE /* プロシージャとファンクションのどちらかを示す */ FROM information_schema.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE'; /* プロシージャのみ抽出 */
実行例
mysql> SELECT -> ROUTINE_SCHEMA, /* ストアドプロシージャがあるデータベース */ -> ROUTINE_NAME, /* ストアドプロシージャの名前 */ -> ROUTINE_TYPE /* プロシージャとファンクションのどちらかを示す */ -> FROM -> information_schema.ROUTINES -> WHERE -> ROUTINE_TYPE = 'PROCEDURE'; /* プロシージャのみ抽出 */ +----------------+--------------+--------------+ | ROUTINE_SCHEMA | ROUTINE_NAME | ROUTINE_TYPE | +----------------+--------------+--------------+ | test | test1 | PROCEDURE | | test | testproc1 | PROCEDURE | | test | testproc2 | PROCEDURE | +----------------+--------------+--------------+ 3 rows in set (0.44 sec)
スポンサードリンク