Wie kann ich die Liste der gespeicherten Prozeduren oder gespeicherten Funktionen in der mysql-Befehlszeile sehen, wie show tables;
o show databases;
Befehle.
Antworten
Zu viele Anzeigen?
macio.Jun
Punkte
9241
John Haugeland
Punkte
8443
Ich bevorzuge etwas, das:
- Listet sowohl Funktionen als auch Verfahren auf,
- Lassen Sie mich wissen, welche das sind,
- Gibt die Namen und Typen der Verfahren an und sonst nichts ,
- Filtert die Ergebnisse nach der aktuellen Datenbank, nicht der aktuelle Definierer
- Sortiert das Ergebnis
Wenn ich andere Antworten in diesem Thread zusammenfasse, komme ich zu folgendem Ergebnis
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... was zu Ergebnissen führt, die wie folgt 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)
Optimizer
Punkte
609
Nicht registrierter Benutzer
Punkte
0
trapper_hag
Punkte
711
Eine Abwandlung 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 nur, weil ich nach der Hausarbeit 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';