it-swarm.com.de

Liste der gespeicherten Prozeduren / Funktionen MySQL-Befehlszeile

Wie kann ich die Liste der gespeicherten Prozeduren oder gespeicherten Funktionen in der mysql-Befehlszeile anzeigen, wie z. B. die Befehle show tables; oder show databases;?.

458
systemsfault
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
717
fredrik
show procedure status

zeigt Ihnen die gespeicherten Prozeduren.

show create procedure MY_PROC

zeigt Ihnen die Definition einer Prozedur. Und

help show

zeigt Ihnen alle verfügbaren Optionen für den Befehl show an.

207
unbeknown

Zum Anzeigen im Namen

select name from mysql.proc 

der untere Code, der zum Auflisten der gesamten Prozedur verwendet wird, und der untere Code geben dasselbe Ergebnis wie der Status der Prozedur

select * from mysql.proc 
85
Praveenkumar_V

Ein speziellerer Weg:

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

Wie oben erwähnt,

show procedure status;

Wird in der Tat eine Liste von Prozeduren zeigen, zeigt aber alle von ihnen, serverweit.

Wenn Sie nur diejenigen in einer einzelnen Datenbank anzeigen möchten, versuchen Sie Folgendes:

SHOW PROCEDURE STATUS WHERE Db = 'databasename';
30
Drarok

Alternative:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
28
macio.Jun

Ich bevorzuge etwas, das:

  1. Listet sowohl Funktionen als auch Prozeduren auf.
  2. Lass mich wissen, welche welche sind,
  3. Gibt die Namen und Typen der Prozeduren an nd sonst nichts,
  4. Filtert die Ergebnisse nach der aktuellen Datenbank , nicht nach dem aktuellen Definierer .
  5. Sortiert das Ergebnis

Wenn ich aus anderen Antworten in diesem Thread zusammenhefte, lande ich bei

select 
  name, type 
from 
  mysql.proc 
where 
  db = database() 
order by 
  type, name;

... was zu folgenden Ergebnissen führt:

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

benutze das:

SHOW PROCEDURE STATUS;
15
sharninder

Eine Variation des Beitrags von Praveenkumar_V:

SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';

..und das, weil ich nach einigem Housekeeping Zeit sparen musste:

SELECT CONCAT(
     "GRANT EXECUTE ON PROCEDURE `"
    ,`name`
    ,"` TO [email protected]'%'; -- "
    ,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'PROCEDURE';

SELECT CONCAT(
     "GRANT EXECUTE ON FUNCTION `"
    ,`name`
    ,"` TO [email protected]'%'; -- "
    ,`comment`
)
FROM mysql.proc
WHERE db = 'dbname'
AND `type` = 'FUNCTION';
9
trapper_hag

Um nur deins zu zeigen:

SELECT
  db, type, specific_name, param_list, returns
FROM
  mysql.proc
WHERE
  definer LIKE
  CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
8
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
7
Sunil Kumar

Zeigt alle gespeicherten Prozeduren an:

SHOW PROCEDURE STATUS;

Zeigt alle Funktionen an:

SHOW FUNCTION STATUS;

Zeigt die Definition der angegebenen Prozedur an:

SHOW CREATE PROCEDURE [PROC_NAME];

Zeigt Ihnen alle Abläufe der angegebenen Datenbank an:

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

Wenn Sie die Speicherprozedur für die aktuell ausgewählte Datenbank auflisten möchten,

SHOW PROCEDURE STATUS WHERE Db = DATABASE();

es werden Routinen basierend auf der aktuell ausgewählten Datenbank aufgelistet

UPDATED um die Funktionen in Ihrer Datenbank aufzulisten

select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";

routinen/Speicherprozeduren in Ihrer Datenbank auflisten,

select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";

um Tabellen in Ihrer Datenbank aufzulisten,

select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";

um Ansichten in Ihrer Datenbank aufzulisten,

Methode 1:

select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";

Methode 2:

select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
                           show procedure status;

mit diesem Befehl können Sie alle Prozeduren in Datenbanken anzeigen

1
Karan Rajput

MySQL8

Liste Benutzer Prozeduren und Funktionen für alle Datenbanken:

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 Benutzer Prozeduren und Funktionen für verwendete Datenbank:

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