Dans MariaDB, nous pouvons utiliser le SHOW PROCEDURE STATUS
commande pour renvoyer une liste de procédures stockées.
On peut aussi interroger les information_schema.routines
table pour faire la même chose.
Le SHOW PROCEDURE STATUS
Commande
Le moyen le plus simple de répertorier toutes les procédures stockées consiste à utiliser le SHOW PROCEDURE STATUS
commande.
Exécutez simplement ce qui suit pour répertorier toutes les procédures stockées :
SHOW PROCEDURE STATUS;
La syntaxe ressemble à ceci :
SHOW PROCEDURE STATUS
[LIKE 'pattern' | WHERE expr]
Vous pouvez donc utiliser un LIKE
clause ou WHERE
clause pour affiner les résultats.
Exemple :
SHOW PROCEDURE STATUS LIKE 'film%';
Résultat :
+--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation | +--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+ | sakila | film_in_stock | PROCEDURE | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_ci | | sakila | film_not_in_stock | PROCEDURE | [email protected] | 2021-11-13 07:26:47 | 2021-11-13 07:26:47 | DEFINER | | utf8mb4 | utf8mb4_general_ci | utf8mb4_general_ci | +--------+-------------------+-----------+------------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
Les information_schema.routines
Tableau
Une autre façon d'obtenir une liste des procédures stockées est d'interroger le information_schema.routines
tableau.
Exemple :
SELECT
routine_schema as "Database",
routine_name
FROM
information_schema.routines
WHERE
routine_type = 'PROCEDURE'
ORDER BY
routine_schema ASC,
routine_name ASC;
Résultat :
+----------+--------------------+ | Database | routine_name | +----------+--------------------+ | mysql | AddGeometryColumn | | mysql | DropGeometryColumn | | pethouse | spGetAllPets | | pethouse | spGetPetById | | sakila | film_in_stock | | sakila | film_not_in_stock | | sakila | rewards_report | +----------+--------------------+
Cette table stocke également des informations sur les fonctions stockées. Dans l'exemple ci-dessus, j'ai exclu ceux en utilisant un WHERE
clause pour renvoyer uniquement les procédures stockées (c'est-à-dire les objets avec un routine_type
de PROCEDURE
).
Pour inclure les fonctions 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;
Résultat :
+----------+----------------------------+--------------+ | Database | routine_name | routine_type | +----------+----------------------------+--------------+ | mysql | AddGeometryColumn | PROCEDURE | | mysql | DropGeometryColumn | PROCEDURE | | pethouse | spGetAllPets | PROCEDURE | | pethouse | spGetPetById | PROCEDURE | | 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 | +----------+----------------------------+--------------+
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 exclure certaines bases de données du résultat si nous le souhaitons :
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema NOT IN ('sys', 'information_schema', 'mysql', 'performance_schema')
ORDER BY
routine_schema ASC,
routine_name ASC;
Résultat :
+----------+----------------------------+--------------+ | Database | routine_name | routine_type | +----------+----------------------------+--------------+ | pethouse | spGetAllPets | PROCEDURE | | pethouse | spGetPetById | PROCEDURE | | 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 | +----------+----------------------------+--------------+
Ou nous pourrions le réduire à une base de données donnée :
SELECT
routine_schema as "Database",
routine_name,
routine_type
FROM
information_schema.routines
WHERE
routine_schema = 'pethouse'
ORDER BY
routine_name ASC;
Résultat :
+----------+--------------+--------------+ | Database | routine_name | routine_type | +----------+--------------+--------------+ | pethouse | spGetAllPets | PROCEDURE | | pethouse | spGetPetById | PROCEDURE | +----------+--------------+--------------+