Як я можу побачити список збережених процедур або збережених функцій в командному рядку 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
нижче код, який використовується для переліку всієї процедури, а нижче код дає такий же результат, що і статус показу процедури
select * from mysql.proc
select db,name,type from mysql.proc where db<>'sys';
змінив для отримання додаткової інформації та менш вбудованої системної крути.
Більш конкретний спосіб:
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]';
Варіація публікації Praveenkumar_V:
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?