Poniżej znajdują się dwie opcje, których możemy użyć, aby zwrócić listę funkcji w MySQL.
SHOW FUNCTION STATUS
Polecenie
Najszybszym sposobem na wyświetlenie listy wszystkich funkcji jest użycie SHOW FUNCTION STATUS
polecenie.
Uruchom następujące polecenie, aby wyświetlić wszystkie funkcje:
SHOW FUNCTION STATUS;
Składnia wygląda tak:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Możesz więc użyć LIKE
lub WHERE
klauzula zawężająca wyniki.
Przykład:
SHOW FUNCTION STATUS LIKE '%test%';
Przykładowy wynik:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | PetHotel | test_function | FUNCTION | [email protected] | 2021-11-29 08:09:26 | 2021-11-29 08:09:26 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Możemy użyć WHERE
klauzula, aby filtrować wyniki według kolumn. Na przykład możemy filtrować wyniki do danej bazy danych:
SHOW FUNCTION STATUS WHERE db = 'sakila';
Przykładowy wynik:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | sakila | get_customer_balance | FUNCTION | [email protected] | 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 | [email protected] | 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 | [email protected] | 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
polecenie działa bardzo podobnie do SHOW PROCEDURE STATUS
polecenie, które zwraca listę procedur składowanych.
information_schema.routines
Tabela
Innym sposobem uzyskania listy funkcji w MySQL jest zapytanie o information_schema.routines
tabela.
Przykład:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
Ta tabela przechowuje również informacje o procedurach składowanych. W powyższym przykładzie wykluczyłem je za pomocą WHERE
klauzula zwracająca tylko funkcje (tj. obiekty z routine_type
FUNCTION
).
Aby uwzględnić procedury składowane, możemy usunąć WHERE
klauzula:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
W tym przypadku dodałem również routine_type
kolumna, abyśmy mogli rozróżnić procedury i funkcje.
Możemy również zawęzić go do konkretnej bazy danych:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC;
Przykładowy wynik:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+