Как я могу просмотреть список хранимых процедур или сохраненных функций в командной строке mysql, например команды show tables;
или show databases;
.
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
show procedure status
покажет вам сохраненные процедуры.
show create procedure MY_PROC
покажет вам определение процедуры. И
help show
покажет вам все доступные опции для команды show
.
Процедура просмотра в имени мудрый
select name from mysql.proc
ниже код, используемый для перечисления всей процедуры и ниже кода, дает тот же результат, что и статус процедуры показа
select * from mysql.proc
Более конкретный способ:
SHOW PROCEDURE STATUS
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
Как упоминалось выше,
show procedure status;
На самом деле отобразит список процедур, но покажет их все по всему серверу.
Если вы хотите увидеть только те, что находятся в одной базе данных, попробуйте следующее:
SHOW PROCEDURE STATUS WHERE Db = 'databasename';
Альтернатива:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
Мое предпочтение - это то, что:
Сшив вместе из других ответов в этом потоке, я заканчиваю тем, что
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;
Вариант на сообщение 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;
Показывает все хранимые процедуры.
SHOW FUNCTION STATUS;
Показывает все функции.
SHOW CREATE PROCEDURE [PROC_NAME];
Покажет определение указанной процедуры.
SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
Покажет вам все процедуры данной базы данных.
Если вы хотите отобразить процедуру сохранения для текущей выбранной базы данных,
SHOW PROCEDURE STATUS WHERE Db = DATABASE();
это будет список подпрограмм на основе текущей выбранной базы данных
ОБНОВЛЕНО, чтобы перечислить функции в вашей базе данных
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" ROUTINE_TYPE="FUNCTION";
перечислить процедуры/хранимые процедуры в вашей базе данных,
select * from information_schema.ROUTINES where ROUTINE_SCHEMA="YOUR DATABASE NAME" 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";
show procedure status;
с помощью этой команды вы можете увидеть все процедуры в базах данных
Используйте следующий запрос для всех процедур:
select * from sysobjects
where type='p'
order by crdate desc
object_name(@@procid)
вobject_name(@@procid)
что-нибудь подобное в MySql?EXECUTE
, или иначе, это покажет пустой список.