Abaixo estão duas opções para retornar uma lista de funções no MariaDB.
O SHOW FUNCTION STATUS Comando
A maneira mais rápida de listar todas as funções é usar o
SHOW FUNCTION STATUS comando. Basta executar 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 '%customer%'; Exemplo de resultado:
+--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_ci | | sakila | inventory_held_by_customer | FUNCTION | example@sqldat.com | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_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 = 'music'; Exemplo de resultado:
+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | music | test | FUNCTION | example@sqldat.com | 2021-11-27 09:46:25 | 2021-11-27 09:46:25 | DEFINER | | utf8 | utf8_general_ci | utf8mb4_general_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 MariaDB é 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; Exemplo de resultado:
+----------+----------------------------+ | Database | routine_name | +----------+----------------------------+ | music | test | | sakila | get_customer_balance | | sakila | inventory_held_by_customer | | sakila | inventory_in_stock | +----------+----------------------------+
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 = 'sakila'
ORDER BY
routine_name ASC; Resultado:
+----------+----------------------------+--------------+ | Database | routine_name | routine_type | +----------+----------------------------+--------------+ | sakila | film_in_stock | PROCEDURE | | sakila | film_not_in_stock | PROCEDURE | | sakila | get_customer_balance | FUNCTION | | sakila | inventory_held_by_customer | FUNCTION | | sakila | inventory_in_stock | FUNCTION | | sakila | rewards_report | PROCEDURE | +----------+----------------------------+--------------+