Nedan finns två alternativ som vi kan använda för att returnera en lista över funktioner i MySQL.
SHOW FUNCTION STATUS
Kommando
Det snabbaste sättet att lista ut alla funktioner är att använda SHOW FUNCTION STATUS
kommando.
Kör följande för att lista alla funktioner:
SHOW FUNCTION STATUS;
Syntaxen ser ut så här:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Så du kan använda en LIKE
eller WHERE
klausul för att begränsa resultaten.
Exempel:
SHOW FUNCTION STATUS LIKE '%test%';
Exempelresultat:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 använda WHERE
sats för att filtrera resultaten efter kolumner. Till exempel kan vi filtrera resultaten till en given databas:
SHOW FUNCTION STATUS WHERE db = 'sakila';
Exempelresultat:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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
kommandot fungerar mycket som SHOW PROCEDURE STATUS
kommando, som returnerar en lista över lagrade procedurer.
information_schema.routines
Tabell
Ett annat sätt att få en lista över funktioner i MySQL är att fråga information_schema.routines
bord.
Exempel:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
Den här tabellen lagrar också information om lagrade procedurer. I exemplet ovan uteslöt jag dessa genom att använda en WHERE
sats för att endast returnera funktioner (d.v.s. objekt med en routine_type
av FUNCTION
).
För att inkludera lagrade procedurer kan vi ta bort WHERE
klausul:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
I det här fallet lade jag också till routine_type
kolumn så att vi kan skilja mellan procedurerna och funktionerna.
Vi kan också begränsa den till en specifik databas:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC;
Exempelresultat:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+