Nedan finns två alternativ för att returnera en lista med funktioner i MariaDB.
SHOW FUNCTION STATUS Kommando
Det snabbaste sättet att lista ut alla funktioner är att använda SHOW FUNCTION STATUS kommando.
Kör helt enkelt följande för att lista ut 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 '%customer%'; Exempelresultat:
+--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_ci | | sakila | inventory_held_by_customer | FUNCTION | example@sqldat.com | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_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 = 'music'; Exempelresultat:
+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | music | test | FUNCTION | example@sqldat.com | 2021-11-27 09:46:25 | 2021-11-27 09:46:25 | DEFINER | | utf8 | utf8_general_ci | utf8mb4_general_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 MariaDB ä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; Exempelresultat:
+----------+----------------------------+ | Database | routine_name | +----------+----------------------------+ | music | test | | sakila | get_customer_balance | | sakila | inventory_held_by_customer | | sakila | inventory_in_stock | +----------+----------------------------+
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 = 'sakila'
ORDER BY
routine_name ASC; Resultat:
+----------+----------------------------+--------------+ | Database | routine_name | routine_type | +----------+----------------------------+--------------+ | sakila | film_in_stock | PROCEDURE | | sakila | film_not_in_stock | PROCEDURE | | sakila | get_customer_balance | FUNCTION | | sakila | inventory_held_by_customer | FUNCTION | | sakila | inventory_in_stock | FUNCTION | | sakila | rewards_report | PROCEDURE | +----------+----------------------------+--------------+