По-долу са две опции за връщане на списък с функции в MariaDB.
SHOW FUNCTION STATUS Команда
Най-бързият начин да изброите всички функции е да използвате SHOW FUNCTION STATUS команда.
Просто изпълнете следното, за да изброите всички функции:
SHOW FUNCTION STATUS; Синтаксисът е така:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Така че можете да използвате LIKE или WHERE клауза за стесняване на резултатите.
Пример:
SHOW FUNCTION STATUS LIKE '%customer%'; Примерен резултат:
+--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 | +--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Можем да използваме WHERE клауза за филтриране на резултатите по колоните. Например, можем да филтрираме резултатите към дадена база данни:
SHOW FUNCTION STATUS WHERE db = 'music'; Примерен резултат:
+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 командата работи много подобно на SHOW PROCEDURE STATUS команда, която връща списък със съхранени процедури.
information_schema.routines Таблица
Друг начин да получите списък с функции в MariaDB е да потърсите 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; Примерен резултат:
+----------+----------------------------+ | Database | routine_name | +----------+----------------------------+ | music | test | | sakila | get_customer_balance | | sakila | inventory_held_by_customer | | sakila | inventory_in_stock | +----------+----------------------------+
Тази таблица също така съхранява информация за съхранените процедури. В горния пример ги изключих, като използвах 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 = 'sakila'
ORDER BY
routine_name ASC; Резултат:
+----------+----------------------------+--------------+ | 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 | +----------+----------------------------+--------------+