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

MySQL 逆引きリファレンス

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

スポンサードリンク

MySQL に登録されたストアドプロシージャの内容を確認するには次の2つの方法があります。

ストアドプロシージャではなく、ストアドファンクションの一覧を確認したい場合はストアドファンクションの内容を確認する方法を参考にしてください。

SHOW CREATE PROCEDURE で内容を確認する方法

SHOW CREATE PROCEDURE を実行すると、 MySQL に登録されているストアドプロシージャの内容を参照することができます。

書式
SHOW CREATE PROCEDURE 参照するストアドプロシージャの名前

但し、この方法だと実行結果で表示されるカラム数が多く、通常のコンソールだと表示が崩れるので \G オプションを使用します。

尚、実装したコード部分だけ参照したい場合は information_schema の ROUTINES テーブルを直接参照します。

mysql> SHOW CREATE PROCEDURE test1 \G
*************************** 1. row ***************************
           Procedure: test1
            sql_mode: NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `test1`(OUT pr
mInOut INT)
BEGIN
  SET prmInOut = 1234 + prmInOut;
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 を 'PROCEDURE' に絞り込み、ROUTINE_NAME で参照したいプロシージャの名前を指定します。今回の例では test1 という名前のストアドプロシージャの内容を確認してみます。

SQLサンプル
SELECT
  ROUTINE_DEFINITION
FROM
  information_schema.ROUTINES
WHERE
  ROUTINE_NAME = 'test1' /* 参照するストアドプロシージャの名前 */
  AND ROUTINE_TYPE = 'PROCEDURE'; /* 同名のファンクションを排除 */
実行例
mysql> SELECT
    ->   ROUTINE_DEFINITION
    -> FROM
    ->   information_schema.ROUTINES
    -> WHERE
    ->   ROUTINE_NAME = 'test1' /* 参照するストアドプロシージャの名前 */
    ->   AND ROUTINE_TYPE = 'PROCEDURE'; /* 同名のファンクションを排除 */
+---------------------------------------------+
| ROUTINE_DEFINITION                          |
+---------------------------------------------+
| BEGIN
  SET prmInOut = 1234 + prmInOut;
END |
+---------------------------------------------+
1 row in set (0.01 sec)

ちなみにストアドプロシージャの引数の情報は information_schema の PARAMETERS テーブルに格納されていますが、SHOW CREATE PROCEDURE での確認の方が分かりやすいので、ここでは特に説明しません。

スポンサードリンク

ストアドプロシージャ

その他のカテゴリー一覧