524 Stimmen

Liste der gespeicherten Prozeduren/Funktionen Mysql Command Line

Wie kann ich die Liste der gespeicherten Prozeduren oder gespeicherten Funktionen in der mysql-Befehlszeile sehen, wie show tables; o show databases; Befehle.

8voto

Sunil Kumar Punkte 629
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'

8voto

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

SHOW PROCEDURE STATUS WHERE Db = DATABASE();

wird eine Liste von Routinen basierend auf der aktuell ausgewählten Datenbank angezeigt

AKTUALISIERT um die Funktionen in Ihrer Datenbank aufzulisten

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

um die Routinen/Speicherverfahren 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 die 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";

8voto

Charlie Skilbeck Punkte 1029

Um nur Ihre zu zeigen:

SELECT
  db, type, specific_name, param_list, returns
FROM
  mysql.proc
WHERE
  definer LIKE
  CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));

6voto

Alistair Jones Punkte 461

Seit MySQL 8.0 ist die mysql.procs Tabelle wurde entfernt. Wenn Sie einen der Befehle aus den Antworten hier ausführen, die diese Tabelle verwenden, erhalten Sie eine Fehlermeldung, die (ganz logisch) lautet:

Table 'mysql.proc' doesn't exist

Um stattdessen eine Liste mit den Namen von Prozeduren/Funktionen abzurufen, verwenden Sie:

SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='<your_db_name>';

In meinem Fall habe ich sie so bearbeitet, dass nur die Prozeduren und nicht die Funktionen angezeigt werden:

SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='<your_db_name>' AND routine_type='PROCEDURE';

3voto

dolmen Punkte 7171

Meine Lieblingsdarstellung der Prozedurenliste 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';

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X