Wie kann ich die Liste der gespeicherten Prozeduren oder gespeicherten Funktionen in der MySQL-Befehlszeile wie show tables;
oder show databases;
Befehle sehen.
Wie kann ich die Liste der gespeicherten Prozeduren oder gespeicherten Funktionen in der MySQL-Befehlszeile wie show tables;
oder show databases;
Befehle sehen.
Antworten:
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 show
Befehl.
Zum Anzeigen des Verfahrens in Bezug auf den Namen
select name from mysql.proc
Der folgende Code, der zum Auflisten aller Prozeduren verwendet wird, und der folgende Code geben dasselbe Ergebnis wie der Status der Prozedur anzeigen
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
für ein bisschen mehr Informationen und weniger eingebautes System kruft weiterentwickelt.
Ein spezifischerer Weg:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Wie oben erwähnt,
show procedure status;
Zeigt zwar eine Liste von Prozeduren an, zeigt aber alle serverweit an.
Wenn Sie nur diejenigen in einer einzelnen Datenbank anzeigen möchten, versuchen Sie Folgendes:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Ich bevorzuge etwas, das:
Wenn ich aus anderen Antworten in diesem Thread zusammennehme, habe ich am Ende
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... was zu Ergebnissen führt, die so aussehen:
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)
benutze das:
SHOW PROCEDURE STATUS;
Zeigt alle gespeicherten Prozeduren an:
SHOW PROCEDURE STATUS;
Zeigt alle Funktionen:
SHOW FUNCTION STATUS;
Zeigt die Definition der angegebenen Prozedur an:
SHOW CREATE PROCEDURE [PROC_NAME];
Zeigt Ihnen alle Prozeduren der angegebenen Datenbank:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
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 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';
Um nur deine zu zeigen:
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'
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
AKTUALISIERT , um Funktionen in Ihrer Datenbank aufzulisten
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
um Routinen / Speicherprozeduren in Ihrer Datenbank aufzulisten,
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";
Mein Lieblings-Rendering der Prozedurliste der aktuellen Datenbank: Name, Parameterliste, Kommentar
SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';
Rückgaben für Funktionen hinzufügen:
SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';
Listen Sie die Prozeduren und Funktionen des Benutzers für alle Datenbanken auf :
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`
;
Listen Sie die Prozeduren und Funktionen des Benutzers für die verwendete Datenbank auf :
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)
in SSMS so etwas in MySql?