MySQL のストアドプロシージャの一覧を取得する

ここでは MySQL でデータベース内のストアドプロシージャ一覧を取得する方法をご説明します。

SHOW PROCEDURE STATUS でストアドプロシージャ一覧を取得する

MySQL の SHOW PROCEDURE STATUS 文を使うと、データベース内のストアドプロシージャの一覧を取得することができます。

SHOW PROCEDURE STATUS; とだけ実行すると、全データベースのストアドプロシージャの一覧が取得できます。

ユーザーが定義したストアドプロシージャだけでなく、システムのストアドプロシージャも含まれます。

SHOW PROCEDURE STATUS;

[実行結果]

MySQL のストアドプロシージャの一覧を取得する 1


データベースを指定して、ストアドプロシージャの一覧を取得したい時は、WHERE 句で Db = [データベース名] のよう指定することができます。

例えば test データベースのストアドプロシージャの一覧を取得したい時は次のようにできます。

SHOW PROCEDURE STATUS WHERE Db = 'test';

[実行結果]

MySQL のストアドプロシージャの一覧を取得する 2


ストアドプロシージャ名をキーワードで検索して一覧を取得したい時は、LIKE 'キーワード' のよう指定することができます。

例えば insert という言葉がストアドプロシージャ名に入ったストアドプロシージャの一覧を取得したい時は次のようにできます。

SHOW PROCEDURE STATUS LIKE '%insert%'

[実行結果]

MySQL のストアドプロシージャの一覧を取得する 3


SHOW CREATE PROCEDURE でストアドプロシージャの定義を取得する

見つけたストアドプロシージャの定義を取得したい場合は SHOW CREATE PROCEDURE 文が使えます。

insert_exam という名前のストアドプロシージャの定義を取得したい場合は、次のようにできます。

SHOW CREATE PROCEDURE insert_exam;

[実行結果]

MySQL のストアドプロシージャの一覧を取得する 4

結果セットの 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 には、次のようにシステム用のストアドプロシージャやファンクションも含まれます。

MySQL のストアドプロシージャの一覧を取得する 5


ストアドプロシージャのみを取得するには、ROUTINE_TYPE = 'PROCEDURE' を指定します。

データベースを指定するには ROUTINE_SCHEMA = 'データベース名' のようにフィルターします。


例えば、INFORMATION_SCHEMA.ROUTINES から test データベースのストアドプロシージャ一覧を取得するには次のようにできます。

SELECT 	*
FROM	INFORMATION_SCHEMA.ROUTINES 
WHERE 	ROUTINE_TYPE = 'PROCEDURE' 
		AND ROUTINE_SCHEMA = 'test';

[実行結果]

MySQL のストアドプロシージャの一覧を取得する 6

SPECIFIC_NAME と ROUTINE_NAME がストアドプロシージャ名で、同じ値を返します。


ROUTINE_DEFINITION カラムにもストアドプロシージャの定義が入っていますが、BEGIN から END までで引数の定義は入っていません。

MySQL のストアドプロシージャの一覧を取得する 7

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] でも、ストアドプロシージャの一覧を確認することができます。

MySQL のストアドプロシージャの一覧を取得する 8


編集するには、編集したいストアドプロシージャを選択して右クリックし [Alter Stored Procedure...] を選択します。

MySQL のストアドプロシージャの一覧を取得する 9


編集画面が開くので、変更して [Apply] ボタンをクリックします。

MySQL のストアドプロシージャの一覧を取得する 10


以上、MySQL でストアドプロシージャの一覧を取得する方法ご説明しました。

© 2024 MySQL 入門