SHOW FUNCTIONS
MySQL proporciona varias formas de listar y obtener información sobre las funciones almacenadas en una base de datos.
SHOW FUNCTION STATUS
-- Listar todas las funciones de la base de datos actual
SHOW FUNCTION STATUS WHERE Db = 'tienda_mysql';| Db | Name | Type | Definer | Modified | Created | Security_type |
|---|---|---|---|---|---|---|
| tienda_mysql | fn_precio_con_iva | FUNCTION | root@localhost | ... | ... | DEFINER |
| tienda_mysql | fn_nivel_stock | FUNCTION | root@localhost | ... | ... | DEFINER |
Filtrar con LIKE
-- Funciones que empiezan con fn_
SHOW FUNCTION STATUS WHERE Db = 'tienda_mysql' AND Name LIKE 'fn_%';-- Funciones creadas por un usuario específico
SHOW FUNCTION STATUS WHERE Definer = 'root@localhost';SHOW CREATE FUNCTION
Muestra la sentencia CREATE completa de una función:
SHOW CREATE FUNCTION fn_precio_con_iva\GResultado:
Function: fn_precio_con_iva
sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,...
Create Function: CREATE FUNCTION `fn_precio_con_iva`(precio DECIMAL(10,2))
RETURNS decimal(10,2)
DETERMINISTIC
BEGIN
RETURN ROUND(precio * 1.21, 2);
END
character_set_client: utf8mb4
collation_connection: utf8mb4_0900_ai_ci
Consultar information_schema
La tabla information_schema.ROUTINES contiene información detallada:
SELECT
ROUTINE_NAME AS nombre,
ROUTINE_TYPE AS tipo,
DATA_TYPE AS tipo_retorno,
DTD_IDENTIFIER AS retorno_detalle,
IS_DETERMINISTIC AS determinista,
SQL_DATA_ACCESS AS acceso_datos,
SECURITY_TYPE AS seguridad,
CREATED AS creada
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = 'tienda_mysql'
AND ROUTINE_TYPE = 'FUNCTION';| nombre | tipo | tipo_retorno | determinista | acceso_datos | seguridad |
|---|---|---|---|---|---|
| fn_precio_con_iva | FUNCTION | decimal | YES | CONTAINS SQL | DEFINER |
| fn_nivel_stock | FUNCTION | varchar | YES | CONTAINS SQL | DEFINER |
Ver parámetros de una función
SELECT
PARAMETER_NAME AS parametro,
DATA_TYPE AS tipo,
PARAMETER_MODE AS modo,
ORDINAL_POSITION AS posicion
FROM information_schema.PARAMETERS
WHERE SPECIFIC_SCHEMA = 'tienda_mysql'
AND SPECIFIC_NAME = 'fn_descuento'
AND PARAMETER_MODE IS NOT NULL
ORDER BY ORDINAL_POSITION;| parametro | tipo | modo | posicion |
|---|---|---|---|
| precio | decimal | IN | 1 |
| porcentaje | int | IN | 2 |
Contar funciones
SELECT COUNT(*) AS total_funciones
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = 'tienda_mysql'
AND ROUTINE_TYPE = 'FUNCTION';Funciones vs procedimientos
SELECT ROUTINE_TYPE AS tipo, COUNT(*) AS total
FROM information_schema.ROUTINES
WHERE ROUTINE_SCHEMA = 'tienda_mysql'
GROUP BY ROUTINE_TYPE;| tipo | total |
|---|---|
| FUNCTION | 6 |
| PROCEDURE | 12 |
En el siguiente artículo veremos cómo eliminar funciones con DROP FUNCTION.
Escrito por Eduardo Lázaro
