Níže jsou dvě možnosti, které můžeme použít k vrácení seznamu funkcí v MySQL.
SHOW FUNCTION STATUS
Příkaz
Nejrychlejší způsob, jak vypsat všechny funkce, je použít SHOW FUNCTION STATUS
příkaz.
Chcete-li zobrazit všechny funkce, spusťte následující:
SHOW FUNCTION STATUS;
Syntaxe vypadá takto:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Můžete tedy použít LIKE
nebo WHERE
klauzule pro zúžení výsledků.
Příklad:
SHOW FUNCTION STATUS LIKE '%test%';
Příklad výsledku:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Můžeme použít WHERE
klauzule pro filtrování výsledků podle sloupců. Můžeme například filtrovat výsledky do dané databáze:
SHOW FUNCTION STATUS WHERE db = 'sakila';
Příklad výsledku:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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
příkaz funguje velmi podobně jako SHOW PROCEDURE STATUS
příkaz, který vrátí seznam uložených procedur.
information_schema.routines
Tabulka
Dalším způsobem, jak získat seznam funkcí v MySQL, je dotaz na information_schema.routines
tabulka.
Příklad:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
Tato tabulka také ukládá informace o uložených procedurách. Ve výše uvedeném příkladu jsem je vyloučil pomocí WHERE
klauzule k vrácení pouze funkcí (tj. objektů s routine_type
z FUNCTION
).
Chcete-li zahrnout uložené procedury, můžeme odstranit WHERE
klauzule:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
V tomto případě jsem také přidal routine_type
abychom mohli rozlišovat mezi procedurami a funkcemi.
Můžeme to také zúžit na konkrétní databázi:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC;
Ukázkový výsledek:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+