Vous trouverez ci-dessous deux options pour renvoyer une liste de fonctions dans MariaDB.
Le SHOW FUNCTION STATUS Commande
Le moyen le plus rapide de lister toutes les fonctions est d'utiliser le SHOW FUNCTION STATUS commande.
Exécutez simplement ce qui suit pour répertorier toutes les fonctions :
SHOW FUNCTION STATUS; La syntaxe ressemble à ceci :
SHOW FUNCTION STATUS
[LIKE 'pattern' | WHERE expr]
Vous pouvez donc utiliser un LIKE ou WHERE clause pour affiner les résultats.
Exemple :
SHOW FUNCTION STATUS LIKE '%customer%'; Exemple de résultat :
+--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 | +--------+----------------------------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Nous pouvons utiliser le WHERE clause pour filtrer les résultats par les colonnes. Par exemple, nous pouvons filtrer les résultats vers une base de données donnée :
SHOW FUNCTION STATUS WHERE db = 'music'; Exemple de résultat :
+-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | 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 | +-------+------+----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Le SHOW FUNCTION STATUS La commande fonctionne très bien comme la commande SHOW PROCEDURE STATUS commande, qui renvoie une liste de procédures stockées.
Les information_schema.routines Tableau
Une autre façon d'obtenir une liste de fonctions dans MariaDB est d'interroger le information_schema.routines tableau.
Exemple :
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'FUNCTION'
ORDER BY
routine_schema ASC,
routine_name ASC; Exemple de résultat :
+----------+----------------------------+ | Database | routine_name | +----------+----------------------------+ | music | test | | sakila | get_customer_balance | | sakila | inventory_held_by_customer | | sakila | inventory_in_stock | +----------+----------------------------+
Cette table stocke également des informations sur les procédures stockées. Dans l'exemple ci-dessus, j'ai exclu ceux en utilisant un WHERE clause pour renvoyer uniquement les fonctions (c'est-à-dire les objets avec un routine_type de FUNCTION ).
Pour inclure les procédures stockées, nous pouvons supprimer le WHERE clause :
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
ORDER BY
routine_schema ASC,
routine_name ASC;
Dans ce cas, j'ai également ajouté le routine_type colonne afin que nous puissions faire la distinction entre les procédures et les fonctions.
Nous pouvons également le réduire à une base de données spécifique :
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'sakila'
ORDER BY
routine_name ASC; Résultat :
+----------+----------------------------+--------------+ | 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 | +----------+----------------------------+--------------+