MySQL のファンクションの一覧を取得する

ここでは MySQL でデータベース内のファンクション一覧を取得する方法をご説明します。

SHOW FUNCTION STATUS でファンクション一覧を取得する

MySQL の SHOW FUNCTION STATUS 文を使うと、データベース内のファンクションの一覧を取得することができます。

SHOW FUNCTION STATUS; とだけ実行すると、全データベースのファンクションの一覧が取得できます。

ユーザーが定義したファンクションだけでなく、システムのファンクションも含まれます。

SHOW FUNCTION STATUS;

[実行結果]

MySQL のファンクションの一覧を取得する 1


データベースを指定して、ファンクションの一覧を取得したい時は、WHERE 句で Db = [データベース名] のよう指定することができます。

例えば test_db データベースのファンクションの一覧を取得したい時は次のようにできます。

SHOW FUNCTION STATUS WHERE Db = 'test_db';

[実行結果]

MySQL のファンクションの一覧を取得する 2


ファンクション名をキーワードで検索して一覧を取得したい時は、LIKE 'キーワード' のよう指定することができます。

例えば get という言葉がファンクション名に入ったファンクションの一覧を取得したい時は次のようにできます。

SHOW FUNCTION STATUS LIKE '%get%';

[実行結果]

MySQL のファンクションの一覧を取得する 3


SHOW CREATE FUNCTION でファンクションの定義を取得する

見つけたファンクションの定義を取得したい場合は SHOW CREATE FUNCTION 文が使えます。

ファンクションが存在するデータベースを選択して実行します。

例えば、get_before_tax_price という名前のファンクションの定義を取得したい場合は、次のようにできます。

SHOW CREATE FUNCTION get_before_tax_price;

[実行結果]

MySQL のファンクションの一覧を取得する 4

結果セットの Create Function カラムにファンクションの定義があります。

CREATE DEFINER=`root`@`localhost` FUNCTION `get_before_tax_price`(
	after_tax_price DECIMAL(13,2)
) RETURNS decimal(13,2)
    DETERMINISTIC
BEGIN
	
    DECLARE before_tax_price DECIMAL(13,2);
    DECLARE sale_tax_percent DECIMAL(5,2) DEFAULT 10; -- 10%
    
    SET before_tax_price = IFNULL(after_tax_price, 0) * 100 / (sale_tax_percent + 100) ;
    RETURN  before_tax_price;
    
END

INFORMATION_SCHEMA.ROUTINES でファンクション一覧を取得する

MySQL の INFORMATION_SCHEMA.ROUTINES システムビューからも、ファンクションの一覧を取得することができます。

INFORMATION_SCHEMA.ROUTINES には、次のようにシステム用のファンクションやストアドプロシージャも含まれます。

MySQL のファンクションの一覧を取得する 5


ファンクションのみを取得するには、ROUTINE_TYPE = 'FUNCTION' を指定します。

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


例えば、INFORMATION_SCHEMA.ROUTINES から test_db データベースのファンクション一覧を取得するには次のようにできます。

SELECT 	*
FROM	INFORMATION_SCHEMA.ROUTINES 
WHERE 	ROUTINE_TYPE = 'FUNCTION' 
		AND ROUTINE_SCHEMA = 'test_db';

[実行結果]

MySQL のファンクションの一覧を取得する 6

SPECIFIC_NAME と ROUTINE_NAME がファンクション名で、同じ値を返します。


ROUTINE_DEFINITION カラムにもファンクションの定義が入っていますが、BEGIN から END までで引数の定義は入っていません。

MySQL のファンクションの一覧を取得する 7

BEGIN
	
	DECLARE before_tax_price DECIMAL(13,2);
	DECLARE sale_tax_percent DECIMAL(5,2) DEFAULT 10; -- 10%
	
	SET before_tax_price = IFNULL(after_tax_price, 0) * 100 / (sale_tax_percent + 100) ;
	RETURN  before_tax_price;
	
END

MySQL Workbench でファンクションの一覧を確認・編集する

MySQL Workbench の Schema タブの [Database] > [Functions] でも、ファンクションの一覧を確認することができます。

MySQL のファンクションの一覧を取得する 8


編集するには、編集したいファンクションを選択して右クリックし [Alter Function...] を選択します。

MySQL のファンクションの一覧を取得する 9


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

MySQL のファンクションの一覧を取得する 10


以上、MySQL でファンクションの一覧を取得する方法ご説明しました。

© 2024 MySQL 入門