Liste des procédures / fonctions stockées Ligne de commande Mysql

Comment puis-je voir la liste des procédures stockées ou des fonctions stockées dans la ligne de commande mysql comme les show tables; ou show databases; commandes.

 SHOW PROCEDURE STATUS; SHOW FUNCTION STATUS; 
 show procedure status 

va vous montrer 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 commande show .

Pour voir la procédure en termes de nom

 select name from mysql.proc 

le code ci-dessous utilisé pour lister toute la procédure et le code ci-dessous donne le même résultat que le statut 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; 

Va effectivement afficher une liste de procédures, mais montre toutes , à l’échelle du serveur.

Si vous voulez voir uniquement ceux d’une seule firebase database, essayez ceci:

 SHOW PROCEDURE STATUS WHERE Db = 'databasename'; 

Alternative:

 SELECT * FROM INFORMATION_SCHEMA.ROUTINES 

Ma préférence est pour quelque chose qui:

  1. Répertorie les fonctions et les procédures,
  2. Laisse moi savoir qui sont qui,
  3. Donne les noms et types de procédures et rien d’autre ,
  4. Filtre les résultats par la firebase database en cours, pas le définisseur actuel
  5. Trie le résultat

En 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 amène à 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; 

Pour montrer seulement le vôtre:

 SELECT db, type, specific_name, param_list, returns FROM mysql.proc WHERE definer LIKE CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%')); 

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 je devais 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'; 
 SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name' 

Si vous souhaitez répertorier la procédure de stockage pour la firebase database sélectionnée actuelle,

 SHOW PROCEDURE STATUS WHERE Db = DATABASE(); 

il listera les routines en fonction de la firebase database sélectionnée

 SHOW PROCEDURE STATUS; 

Affiche toutes les procédures stockées.

 SHOW FUNCTION STATUS; 

Affiche toutes les fonctions.

 SHOW CREATE PROCEDURE [PROC_NAME]; 

Affiche la définition de la procédure spécifiée.

 SHOW PROCEDURE STATUS WHERE Db = '[db_name]'; 

Vous montrera toutes les procédures de la firebase database donnée.

  show procedure status; 

en utilisant cette commande, vous pouvez voir toutes les procédures dans les bases de données

Utilisez la requête suivante pour toutes les procédures:

 select * from sysobjects where type='p' order by crdate desc