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 | [email protected] | 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 | [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 | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
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 | +----------+---------------+--------------+