Nedenfor er to muligheder, vi kan bruge til at returnere en liste over funktioner i MySQL.
SHOW FUNCTION STATUS
Kommando
Den hurtigste måde at få vist alle funktioner på er at bruge SHOW FUNCTION STATUS
kommando.
Kør følgende for at få en liste over alle funktioner:
SHOW FUNCTION STATUS;
Syntaksen ser sådan ud:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Så du kan bruge en LIKE
eller WHERE
klausul for at indsnævre resultaterne.
Eksempel:
SHOW FUNCTION STATUS LIKE '%test%';
Eksempelresultat:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Vi kan bruge WHERE
klausul for at filtrere resultaterne efter kolonnerne. For eksempel kan vi filtrere resultaterne til en given database:
SHOW FUNCTION STATUS WHERE db = 'sakila';
Eksempelresultat:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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
kommandoen fungerer meget som SHOW PROCEDURE STATUS
kommando, som returnerer en liste over lagrede procedurer.
information_schema.routines
Tabel
En anden måde at få en liste over funktioner i MySQL på er at forespørge information_schema.routines
tabel.
Eksempel:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
Denne tabel gemmer også oplysninger om lagrede procedurer. I ovenstående eksempel ekskluderede jeg dem ved at bruge en WHERE
klausul for kun at returnere funktioner (dvs. objekter med en routine_type
af FUNCTION
).
For at inkludere lagrede procedurer kan vi fjerne WHERE
klausul:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
I dette tilfælde tilføjede jeg også routine_type
kolonne, så vi kan skelne mellem procedurerne og funktionerne.
Vi kan også indsnævre det til en bestemt database:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC;
Eksempelresultat:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+