A continuación hay dos opciones que podemos usar para devolver una lista de funciones en MySQL.
El SHOW FUNCTION STATUS Comando
La forma más rápida de enumerar todas las funciones es usar SHOW FUNCTION STATUS comando.
Ejecute lo siguiente para enumerar todas las funciones:
SHOW FUNCTION STATUS; La sintaxis es así:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Entonces puedes usar un LIKE o WHERE cláusula para reducir los resultados.
Ejemplo:
SHOW FUNCTION STATUS LIKE '%test%'; Resultado de ejemplo:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | PetHotel | test_function | FUNCTION | example@sqldat.com | 2021-11-29 08:09:26 | 2021-11-29 08:09:26 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Podemos usar el WHERE cláusula para filtrar los resultados por las columnas. Por ejemplo, podemos filtrar los resultados a una base de datos dada:
SHOW FUNCTION STATUS WHERE db = 'sakila'; Resultado de ejemplo:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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-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 | example@sqldat.com | 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 | example@sqldat.com | 2021-11-29 08:04:31 | 2021-11-29 08:04:31 | DEFINER | | utf8mb4 | utf8mb4_0900_ai_ci | utf8mb4_0900_ai_ci | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
El SHOW FUNCTION STATUS El comando funciona de forma muy parecida a SHOW PROCEDURE STATUS comando, que devuelve una lista de procedimientos almacenados.
Las information_schema.routines Mesa
Otra forma de obtener una lista de funciones en MySQL es consultar information_schema.routines mesa.
Ejemplo:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
Esta tabla también almacena información sobre procedimientos almacenados. En el ejemplo anterior, los excluí usando un WHERE cláusula para devolver solo funciones (es decir, objetos con un routine_type de FUNCTION ).
Para incluir procedimientos almacenados, podemos eliminar WHERE cláusula:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
En este caso también agregué el routine_type columna para que podamos distinguir entre los procedimientos y funciones.
También podemos reducirlo a una base de datos específica:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC; Resultado de la muestra:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+