web-dev-qa-db-fra.com

Liste des procédures / fonctions stockées 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 telle que les commandes show tables; ou show databases;.

458
systemsfault
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
717
fredrik
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.

207
unbeknown

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 
85
Praveenkumar_V

Une manière plus spécifique:

SHOW PROCEDURE STATUS 
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
43
sassman

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

Alternative:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
28
macio.Jun

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

  1. Répertorie les fonctions et les procédures,
  2. Me laisse savoir qui sont qui,
  3. Donne les noms et types de procédures et rien d'autre,
  4. Filtre les résultats en fonction de la base de données actuelle et non du définisseur actuel
  5. Trie le résultat

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)
21
John Haugeland

utilisez ceci:

SHOW PROCEDURE STATUS;
15
sharninder

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

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)), '%'));
8
Charlie Skilbeck
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
7
Sunil Kumar

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]';
6
Optimizer

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";
5
                           show procedure status;

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

1
Karan Rajput

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`
;
0
Jimmix