508 votes

Liste des procédures stockées/fonctions en 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, par exemple show tables; o show databases; des commandes.

33voto

macio.Jun Points 1857

Alternatif :

SELECT * FROM INFORMATION_SCHEMA.ROUTINES

23voto

John Haugeland Points 858

Ma préférence va à quelque chose qui :

  1. Répertorie à la fois les fonctions et les procédures,
  2. Fais-moi savoir lesquels sont lesquels,
  3. Donne le nom et le type des procédures et rien d'autre ,
  4. Filtre les résultats en fonction de la base de données actuelle, pas le définisseur actuel
  5. Trie le résultat

En assemblant les autres réponses de ce fil, j'obtiens

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)

16voto

Optimizer Points 155

Montre 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]';

15voto

Utilisez ça :

SHOW PROCEDURE STATUS;

9voto

trapper_hag Points 33

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 ce parce que j'avais besoin de gagner du temps après avoir fait un peu de ménage :

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';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X