MySQL のストアドプロシージャの一覧を取得する
ここでは MySQL でデータベース内のストアドプロシージャ一覧を取得する方法をご説明します。
SHOW PROCEDURE STATUS でストアドプロシージャ一覧を取得する
MySQL の SHOW PROCEDURE STATUS 文を使うと、データベース内のストアドプロシージャの一覧を取得することができます。
SHOW PROCEDURE STATUS; とだけ実行すると、全データベースのストアドプロシージャの一覧が取得できます。
ユーザーが定義したストアドプロシージャだけでなく、システムのストアドプロシージャも含まれます。
SHOW PROCEDURE STATUS;
[実行結果]
データベースを指定して、ストアドプロシージャの一覧を取得したい時は、WHERE 句で Db = [データベース名] のよう指定することができます。
例えば test データベースのストアドプロシージャの一覧を取得したい時は次のようにできます。
SHOW PROCEDURE STATUS WHERE Db = 'test';
[実行結果]
ストアドプロシージャ名をキーワードで検索して一覧を取得したい時は、LIKE 'キーワード' のよう指定することができます。
例えば insert という言葉がストアドプロシージャ名に入ったストアドプロシージャの一覧を取得したい時は次のようにできます。
SHOW PROCEDURE STATUS LIKE '%insert%'
[実行結果]
SHOW CREATE PROCEDURE でストアドプロシージャの定義を取得する
見つけたストアドプロシージャの定義を取得したい場合は SHOW CREATE PROCEDURE 文が使えます。
insert_exam という名前のストアドプロシージャの定義を取得したい場合は、次のようにできます。
SHOW CREATE PROCEDURE insert_exam;
[実行結果]
結果セットの Create Procedure カラムにストアドプロシージャの定義があります。
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_exam`(
in_exam_name_en VARCHAR(50),
in_exam_name_jp VARCHAR(50),
OUT out_result VARCHAR(50)
)
BEGIN
INSERT INTO exams
( exam_name_en, exam_name_jp )
VALUES
(in_exam_name_en, in_exam_name_jp);
SET out_result = 'テスト';
END
INFORMATION_SCHEMA.ROUTINES でストアドプロシージャ一覧を取得する
MySQL の INFORMATION_SCHEMA.ROUTINES システムビューからも、ストアドプロシージャの一覧を取得することができます。
INFORMATION_SCHEMA.ROUTINES には、次のようにシステム用のストアドプロシージャやファンクションも含まれます。
ストアドプロシージャのみを取得するには、ROUTINE_TYPE = 'PROCEDURE' を指定します。
データベースを指定するには ROUTINE_SCHEMA = 'データベース名' のようにフィルターします。
例えば、INFORMATION_SCHEMA.ROUTINES から test データベースのストアドプロシージャ一覧を取得するには次のようにできます。
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE'
AND ROUTINE_SCHEMA = 'test';
[実行結果]
SPECIFIC_NAME と ROUTINE_NAME がストアドプロシージャ名で、同じ値を返します。
ROUTINE_DEFINITION カラムにもストアドプロシージャの定義が入っていますが、BEGIN から END までで引数の定義は入っていません。
BEGIN
INSERT INTO exams
( exam_name_en, exam_name_jp )
VALUES
(in_exam_name_en, in_exam_name_jp);
SET out_result = ''テスト'';
END
MySQL Workbench でストアドプロシージャの一覧を確認・編集する
MySQL Workbench の Schema タブの [Database] > [Stored Procedures] でも、ストアドプロシージャの一覧を確認することができます。
編集するには、編集したいストアドプロシージャを選択して右クリックし [Alter Stored Procedure...] を選択します。
編集画面が開くので、変更して [Apply] ボタンをクリックします。
以上、MySQL でストアドプロシージャの一覧を取得する方法ご説明しました。