以下は、MySQLの関数のリストを返すために使用できる2つのオプションです。
SHOW FUNCTION STATUS コマンド
すべての関数を一覧表示する最も簡単な方法は、SHOW FUNCTION STATUSを使用することです。 コマンド。
以下を実行して、すべての機能を一覧表示します。
SHOW FUNCTION STATUS; 構文は次のようになります:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
したがって、LIKEを使用できます またはWHERE 結果を絞り込むための句。
例:
SHOW FUNCTION STATUS LIKE '%test%'; 結果の例:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | PetHotel | test_function | FUNCTION | example@sqldat.com | 2021-11-29 08:09:26 | 2021-11-29 08:09:26 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
WHEREを使用できます 結果を列でフィルタリングする句。たとえば、結果を特定のデータベースにフィルタリングできます。
SHOW FUNCTION STATUS WHERE db = 'sakila'; 結果の例:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | sakila | get_customer_balance | FUNCTION | example@sqldat.com | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | | sakila | inventory_held_by_customer | FUNCTION | example@sqldat.com | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | | sakila | inventory_in_stock | FUNCTION | example@sqldat.com | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
SHOW FUNCTION STATUS コマンドは、SHOW PROCEDURE STATUSと非常によく似ています。 コマンド。ストアドプロシージャのリストを返します。
information_schema.routines 表
MySQLの関数のリストを取得する別の方法は、information_schema.routinesにクエリを実行することです。 テーブル。
例:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
このテーブルには、ストアドプロシージャに関する情報も格納されます。上記の例では、WHEREを使用してそれらを除外しました 関数(つまり、routine_typeを持つオブジェクト)のみを返す句 FUNCTIONの 。
ストアドプロシージャを含めるために、WHEREを削除できます 条項:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
この場合、routine_typeも追加しました 手順と機能を区別できるように列を作成します。
特定のデータベースに絞り込むこともできます:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC; サンプル結果:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+