Jak mogę zobaczyć listę procedur przechowywanych lub funkcji przechowywanych w wierszu poleceń mysql, takich jak show tables;
lub show databases;
polecenia.
Jak mogę zobaczyć listę procedur przechowywanych lub funkcji przechowywanych w wierszu poleceń mysql, takich jak show tables;
lub show databases;
polecenia.
Odpowiedzi:
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
EXECUTE
, w przeciwnym razie wyświetli się pusta lista.
show procedure status
pokaże procedury przechowywane.
show create procedure MY_PROC
pokaże ci definicję procedury. I
help show
pokaże wszystkie dostępne opcje show
polecenia.
Do procedury przeglądania z nazwy
select name from mysql.proc
poniższy kod użyty do wyświetlenia listy wszystkich procedur, a poniższy kod daje taki sam wynik, jak status procedury pokazującej
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
nieco więcej informacji i mniej wbudowanego systemu Kruft.
Bardziej konkretny sposób:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Jak wspomniano powyżej,
show procedure status;
Rzeczywiście pokaże listę procedur, ale pokazuje je wszystkie, dla całego serwera.
Jeśli chcesz zobaczyć tylko te w jednej bazie danych, spróbuj tego:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Preferuję coś, co:
Łącząc z innymi odpowiedziami w tym wątku, kończę
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... co daje wyniki, które wyglądają tak:
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)
Użyj tego:
SHOW PROCEDURE STATUS;
Pokazuje wszystkie procedury przechowywane:
SHOW PROCEDURE STATUS;
Pokazuje wszystkie funkcje:
SHOW FUNCTION STATUS;
Pokazuje definicję określonej procedury:
SHOW CREATE PROCEDURE [PROC_NAME];
Pokazuje wszystkie procedury danej bazy danych:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
Wariacja na temat postu Praveenkumar_V:
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
..i dlatego, że musiałem zaoszczędzić czas po sprzątaniu:
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';
Aby pokazać tylko swoje:
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'
Jeśli chcesz wyświetlić procedurę sklepu dla bieżącej wybranej bazy danych,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
wyświetli listę procedur w oparciu o aktualnie wybraną bazę danych
ZAKTUALIZOWANO, aby wyświetlić funkcje w bazie danych
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
aby wymienić procedury / procedury przechowywania w bazie danych,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
aby wyświetlić tabele w bazie danych,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
aby wyświetlić listę widoków w bazie danych,
metoda 1:
select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";
metoda 2:
select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
Moje ulubione renderowanie listy procedur bieżącej bazy danych: nazwa, lista parametrów, komentarz
SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';
Dodaj zwroty dla funkcji:
SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';
Lista autora procedury i funkcje dla wszystkich baz danych :
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`
;
Lista autora procedury i funkcje do bazy danych w użyciu :
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)
w SSMS coś takiego w MySql?