MySQL のファンクションの一覧を取得する
ここでは MySQL でデータベース内のファンクション一覧を取得する方法をご説明します。
SHOW FUNCTION STATUS でファンクション一覧を取得する
MySQL の SHOW FUNCTION STATUS 文を使うと、データベース内のファンクションの一覧を取得することができます。
SHOW FUNCTION STATUS; とだけ実行すると、全データベースのファンクションの一覧が取得できます。
ユーザーが定義したファンクションだけでなく、システムのファンクションも含まれます。
SHOW FUNCTION STATUS;
[実行結果]
データベースを指定して、ファンクションの一覧を取得したい時は、WHERE 句で Db = [データベース名] のよう指定することができます。
例えば test_db データベースのファンクションの一覧を取得したい時は次のようにできます。
SHOW FUNCTION STATUS WHERE Db = 'test_db';
[実行結果]
ファンクション名をキーワードで検索して一覧を取得したい時は、LIKE 'キーワード' のよう指定することができます。
例えば get という言葉がファンクション名に入ったファンクションの一覧を取得したい時は次のようにできます。
SHOW FUNCTION STATUS LIKE '%get%';
[実行結果]
SHOW CREATE FUNCTION でファンクションの定義を取得する
見つけたファンクションの定義を取得したい場合は SHOW CREATE FUNCTION 文が使えます。
ファンクションが存在するデータベースを選択して実行します。
例えば、get_before_tax_price という名前のファンクションの定義を取得したい場合は、次のようにできます。
SHOW CREATE FUNCTION get_before_tax_price;
[実行結果]
結果セットの 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 には、次のようにシステム用のファンクションやストアドプロシージャも含まれます。
ファンクションのみを取得するには、ROUTINE_TYPE = 'FUNCTION' を指定します。
データベースを指定するには ROUTINE_SCHEMA = 'データベース名' のようにフィルターします。
例えば、INFORMATION_SCHEMA.ROUTINES から test_db データベースのファンクション一覧を取得するには次のようにできます。
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'FUNCTION'
AND ROUTINE_SCHEMA = 'test_db';
[実行結果]
SPECIFIC_NAME と ROUTINE_NAME がファンクション名で、同じ値を返します。
ROUTINE_DEFINITION カラムにもファンクションの定義が入っていますが、BEGIN から END までで引数の定義は入っていません。
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] でも、ファンクションの一覧を確認することができます。
編集するには、編集したいファンクションを選択して右クリックし [Alter Function...] を選択します。
編集画面が開くので、変更して [Apply] ボタンをクリックします。
以上、MySQL でファンクションの一覧を取得する方法ご説明しました。