Abaixo estão duas opções que podemos usar para retornar uma lista de funções no MySQL.
O SHOW FUNCTION STATUS
Comando
A maneira mais rápida de listar todas as funções é usar o
SHOW FUNCTION STATUS
comando. Execute o seguinte para listar todas as funções:
SHOW FUNCTION STATUS;
A sintaxe fica assim:
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Então você pode usar um
LIKE
ou WHERE
cláusula para restringir os resultados. Exemplo:
SHOW FUNCTION STATUS LIKE '%test%';
Exemplo de resultado:
+----------+---------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 o
WHERE
cláusula para filtrar os resultados pelas colunas. Por exemplo, podemos filtrar os resultados para um determinado banco de dados:SHOW FUNCTION STATUS WHERE db = 'sakila';
Exemplo de resultado:
+--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 | +--------+----------------------------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
O
SHOW FUNCTION STATUS
O comando funciona muito parecido com o SHOW PROCEDURE STATUS
comando, que retorna uma lista de procedimentos armazenados. O information_schema.routines
Tabela
Outra maneira de obter uma lista de funções no MySQL é consultar o
information_schema.routines
tabela. Exemplo:
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC;
Essa tabela também armazena informações sobre procedimentos armazenados. No exemplo acima, excluí aqueles usando um
WHERE
cláusula para retornar apenas funções (ou seja, objetos com um routine_type
de FUNCTION
). Para incluir procedimentos armazenados, podemos remover o
WHERE
cláusula:SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
Neste caso eu também adicionei o
routine_type
coluna para que possamos distinguir entre os procedimentos e funções. Também podemos reduzi-lo a um banco de dados específico:
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethotel'
ORDER BY
routine_name ASC;
Resultado da amostra:
+----------+---------------+--------------+ | Database | ROUTINE_NAME | ROUTINE_TYPE | +----------+---------------+--------------+ | PetHotel | spGetAllPets | PROCEDURE | | PetHotel | spGetPetById | PROCEDURE | | PetHotel | test_function | FUNCTION | +----------+---------------+--------------+