MySQLでやりたいことから調べられるリファレンス

MySQL 逆引きリファレンス

ストアドプロシージャの一覧を確認する方法

スポンサードリンク

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)
スポンサードリンク

ストアドプロシージャ

その他のカテゴリー一覧