По-долу са две опции, които можем да използваме, за да върнем списък с функции в MySQL.
SHOW FUNCTION STATUS
Команда
Най-бързият начин да изброите всички функции е да използвате SHOW FUNCTION STATUS
команда.
Изпълнете следното, за да изброите всички функции:
SHOW FUNCTION STATUS;
Синтаксисът е така:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Така че можете да използвате LIKE
или WHERE
клауза за стесняване на резултатите.
Пример:
SHOW FUNCTION STATUS LIKE '%test%';
Примерен резултат:
+---------+--------------+---------+-------- --------+---------------------+------------------- --+--------------+--------+--------------------- -+---------------------+---------------------+| Db | Име | Тип | Определител | Променено | Създаден | Тип_защита | Коментар | символ_набор_клиент | съпоставяне_връзка | Съпоставяне на база данни |+----------+--------------+----------+-------- --------+---------------------+------------------- --+--------------+--------+--------------------- -+---------------------+---------------------+| PetHotel | тест_функция | ФУНКЦИЯ | [email protected] | 29.11.2021 08:09:26 | 29.11.2021 08:09:26 | ДЕФИНИР | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci |+---------+--------------+----------+--------- -------+---------------------+------------------- -+--------------+--------+--------------------- +---------------------+--------------------+
Можем да използваме WHERE
клауза за филтриране на резултатите по колоните. Например, можем да филтрираме резултатите към дадена база данни:
SHOW FUNCTION STATUS WHERE db = 'sakila';
Примерен резултат:
+--------+----------------------------+-------- --+----------------+---------------------+-------- ------------+--------------+--------+--------- ------------+---------------------+-------------- ------+| Db | Име | Тип | Определител | Променено | Създаден | Тип_защита | Коментар | символ_набор_клиент | съпоставяне_връзка | Съпоставяне на база данни |+--------+----------------------------+-------- --+----------------+---------------------+-------- ------------+--------------+--------+--------- ------------+---------------------+-------------- ------+| sakila | get_customer_balance | ФУНКЦИЯ | [email protected] | 29.11.2021 08:04:31 | 29.11.2021 08:04:31 | ДЕФИНИР | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci || sakila | инвентар_държан_от_клиент | ФУНКЦИЯ | [email protected] | 29.11.2021 08:04:31 | 29.11.2021 08:04:31 | ДЕФИНИР | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci || sakila | инвентар_в_наличност | ФУНКЦИЯ | [email protected] | 29.11.2021 08:04:31 | 29.11.2021 08:04:31 | ДЕФИНИР | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci |+--------+----------------------------+-------- -+----------------+---------------------+-------- ------------+---------------+--------+---------- -----------+---------------------+-------------- -----+
SHOW FUNCTION STATUS
командата работи много подобно на SHOW PROCEDURE STATUS
команда, която връща списък със съхранени процедури.
information_schema.routines
Таблица
Друг начин да получите списък с функции в MySQL е да потърсите 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;
Тази таблица също така съхранява информация за съхранените процедури. В горния пример ги изключих, като използвах 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 = 'pethotel'
ORDER BY
routine_name ASC;
Примерен резултат:
<пред>+---------+--------------+--------------+| База данни | ROUTINE_NAME | ROUTINE_TYPE |+----------+--------------+--------------+| PetHotel | spGetAllPets | ПРОЦЕДУРА || PetHotel | spGetPetById | ПРОЦЕДУРА || PetHotel | тест_функция | ФУНКЦИЯ |+---------+--------------+--------------+