Comment puis-je voir la liste des procédures stockées ou des fonctions stockées dans la ligne de commande mysql telle que les commandes show tables;
ou show databases;
.
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
show procedure status
va vous montrer les procédures stockées.
show create procedure MY_PROC
va vous montrer la définition d'une procédure. Et
help show
vous montrera toutes les options disponibles pour la commande show
.
Pour afficher la procédure en fonction du nom
select name from mysql.proc
le code ci-dessous sert à répertorier toute la procédure et le code ci-dessous donne le même résultat que l'état de la procédure d'affichage
select * from mysql.proc
Une manière plus spécifique:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Comme mentionné ci-dessus,
show procedure status;
Affichera en effet une liste de procédures, mais affiche toutes d'entre elles, à l'échelle du serveur.
Si vous voulez voir seulement ceux-là dans une seule base de données, essayez ceci:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Alternative:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
Ma préférence va à quelque chose qui:
Cousant ensemble d'autres réponses dans ce fil, je me retrouve avec
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... ce qui vous donne des résultats qui ressemblent à ceci:
mysql> select name, type from mysql.proc where db = database() order by type, name;
+------------------------------+-----------+
| name | type |
+------------------------------+-----------+
| get_oldest_to_scan | FUNCTION |
| get_language_prevalence | PROCEDURE |
| get_top_repos_by_user | PROCEDURE |
| get_user_language_prevalence | PROCEDURE |
+------------------------------+-----------+
4 rows in set (0.30 sec)
utilisez ceci:
SHOW PROCEDURE STATUS;
Une variante du message de Praveenkumar_V:
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
..et cela parce que je devais gagner du temps après quelques tâches ménagères:
SELECT CONCAT(
"GRANT EXECUTE ON PROCEDURE `"
,`name`
,"` TO username@'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'PROCEDURE';
SELECT CONCAT(
"GRANT EXECUTE ON FUNCTION `"
,`name`
,"` TO username@'%'; -- "
,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'FUNCTION';
Pour ne montrer que le vôtre:
SELECT
db, type, specific_name, param_list, returns
FROM
mysql.proc
WHERE
definer LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
Affiche toutes les procédures stockées:
SHOW PROCEDURE STATUS;
Affiche toutes les fonctions:
SHOW FUNCTION STATUS;
Affiche la définition de la procédure spécifiée:
SHOW CREATE PROCEDURE [PROC_NAME];
Vous montre toutes les procédures de la base de données donnée:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
Si vous souhaitez répertorier la procédure de stockage pour la base de données actuellement sélectionnée,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
il listera les routines basées sur la base de données actuellement sélectionnée
UPDATED pour lister les fonctions de votre base de données
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
pour lister les routines/procédures de stockage dans votre base de données,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
pour lister les tables dans votre base de données,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
pour lister les vues dans votre base de données,
méthode 1:
select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";
méthode 2:
select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
show procedure status;
en utilisant cette commande, vous pouvez voir toutes les procédures dans les bases de données
MySQL8
Liste tilisateur procédures et fonctions pour toutes bases de données:
SELECT
`ROUTINE_SCHEMA` AS `database`
,`ROUTINE_TYPE` AS `type`
,`SPECIFIC_NAME` AS `name`
,`DTD_IDENTIFIER` AS `data_type`
FROM
`INFORMATION_SCHEMA`.`ROUTINES`
WHERE
`definer` LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
ORDER BY
`database`
,`type`
,`name`
;
Liste tilisateur procédures et fonctions pour le base de données utilisée:
SELECT
`ROUTINE_SCHEMA` AS `database`
,`ROUTINE_TYPE` AS `type`
,`SPECIFIC_NAME` AS `name`
,`DTD_IDENTIFIER` AS `data_type`
FROM
`INFORMATION_SCHEMA`.`ROUTINES`
WHERE
`definer` LIKE
CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'))
AND
`ROUTINE_SCHEMA` = DATABASE()
ORDER BY
`type`
,`name`
;