Comment puis-je voir la liste des procédures stockées ou des fonctions stockées dans la ligne de commande mysql comme show tables;
ou les show databases;
commandes.
Comment puis-je voir la liste des procédures stockées ou des fonctions stockées dans la ligne de commande mysql comme show tables;
ou les show databases;
commandes.
Réponses:
show procedure status
vous montrera les procédures stockées.
show create procedure MY_PROC
vous montrera la définition d'une procédure. Et
help show
vous montrera toutes les options disponibles pour la show
commande.
Pour afficher la procédure dans le nom
select name from mysql.proc
sous le code utilisé pour lister toute la procédure et sous le code donne le même résultat que le statut de la procédure
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
pour un peu plus d'informations et moins de kruft système intégré.
Une manière plus spécifique:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Comme mentionné ci-dessus,
show procedure status;
Affiche en effet une liste de procédures, mais les affiche toutes , à l'échelle du serveur.
Si vous voulez voir uniquement ceux dans une seule base de données, essayez ceci:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Ma préférence va à quelque chose qui:
Assemblant 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;
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]';
Une variation sur le post 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 j'avais besoin de gagner du temps après quelques travaux ménagers:
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 afficher uniquement 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'
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
MIS À JOUR pour répertorier les fonctions de votre base de données
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
pour répertorier 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 de votre base de données,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
pour répertorier 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";
Mon rendu préféré de la liste des procédures de la base de données actuelle: nom, liste des paramètres, commentaire
SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';
Ajouter des retours pour les fonctions:
SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';
Répertoriez les procédures et fonctions de l'utilisateur pour toutes les 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`
;
Répertoriez les procédures et fonctions de l' utilisateur pour la 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`
;
object_name(@@procid)
dans SSMS quelque chose comme ça dans MySql?