Как я могу увидеть список хранимых процедур или хранимых функций в командной строке mysql, как show tables;
или show databases;
команды.
Как я могу увидеть список хранимых процедур или хранимых функций в командной строке mysql, как show tables;
или show databases;
команды.
Ответы:
show procedure status
покажет вам хранимые процедуры.
show create procedure MY_PROC
покажет вам определение процедуры. А также
help show
покажет вам все доступные опции для show
команды.
Для просмотра процедуры во имя мудрый
select name from mysql.proc
приведенный ниже код используется для перечисления всей процедуры, а приведенный ниже код дает тот же результат, что и состояние процедуры show
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
немного больше информации и меньше встроенной системы kruft.
Более конкретный способ:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Как указано выше,
show procedure status;
Действительно покажет список процедур, но покажет все из них, для всего сервера.
Если вы хотите видеть только те, в одной базе данных, попробуйте это:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Я предпочитаю что-то, что:
Сшивая вместе из других ответов в этой теме, я в конечном итоге
select
name, type
from
mysql.proc
where
db = database()
order by
type, name;
... что приводит к результатам, которые выглядят так:
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)
использовать этот:
SHOW PROCEDURE STATUS;
Показывает все хранимые процедуры:
SHOW PROCEDURE STATUS;
Показывает все функции:
SHOW FUNCTION STATUS;
Показывает определение указанной процедуры:
SHOW CREATE PROCEDURE [PROC_NAME];
Показывает все процедуры данной базы данных:
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
Вариант поста Правеенкумар_В:
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'PROCEDURE';
SELECT `name` FROM mysql.proc WHERE db = 'dbname' AND `type` = 'FUNCTION';
..и это потому, что мне нужно было сэкономить время после некоторой уборки:
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';
Чтобы показать только ваш:
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'
Если вы хотите отобразить процедуру сохранения для текущей выбранной базы данных,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
это будет список подпрограмм на основе текущей выбранной базы данных
ОБНОВЛЕНО, чтобы перечислить функции в вашей базе данных
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="FUNCTION";
перечислить процедуры / хранимые процедуры в вашей базе данных,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" and ROUTINE_TYPE="PROCEDURE";
перечислить таблицы в вашей базе данных,
select * from information_schema.TABLES WHERE TABLE_TYPE="BASE TABLE" AND TABLE_SCHEMA="YOUR DATABASE NAME";
для просмотра списка в вашей базе данных,
способ 1:
select * from information_schema.TABLES WHERE TABLE_TYPE="VIEW" AND TABLE_SCHEMA="YOUR DATABASE NAME";
способ 2:
select * from information_schema.VIEWS WHERE TABLE_SCHEMA="YOUR DATABASE NAME";
Мой любимый рендеринг списка процедур текущей базы данных: имя, список параметров, комментарий
SELECT specific_name AS name, param_list AS params, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'PROCEDURE';
Добавьте возврат для функций:
SELECT specific_name AS name, param_list AS params, `returns`, `comment`
FROM mysql.proc
WHERE db = DATABASE()
AND type = 'FUNCTION';
Список пользователей это процедуры и функции для всех баз данных :
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`
;
Перечислите пользовательские процедуры и функции для используемой базы данных :
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)
в SSMS что-нибудь подобное в MySql?