Список хранимых процедур / функций Mysql Command Line

Как я могу увидеть список хранимых процедур или хранимых функций в командной строке mysql, как show tables;или show databases;команды.

9.04.2009 08:43:36
17 ОТВЕТОВ
РЕШЕНИЕ
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;
739
29.06.2013 09:56:23
Есть ли способ найти текущее имя хранимой процедуры? Я полагаю, что это object_name(@@procid) в SSMS что-нибудь подобное в MySql?
xameeramir 2.06.2015 17:09:59
Если пользователь имеет привилегию EXECUTE, или еще, это покажет пустой список.
mjb 12.01.2018 01:42:29
show procedure status

покажет вам хранимые процедуры.

show create procedure MY_PROC

покажет вам определение процедуры. А также

help show

покажет вам все доступные опции для showкоманды.

211
9.04.2009 08:52:40
Как указал Кодлер, справочное шоу не работает, поскольку справка - это инструкция командной строки mysql. Чтобы получить больше информации о команде SHOW, перейдите прямо на страницу документации MySQL по адресу: dev.mysql.com/doc/refman/5.1/en/show.html
IvanD 29.04.2013 03:04:11
Ну, я не уверен, почему вы так говорите, справочное шоу отлично работает для меня, используя MySQL 5.0.95 на centos 6.3
h4unt3r 6.05.2013 00:08:56
Это работает, если вы используете собственный клиент командной строки mysqls. Я не, поэтому я предпочитаю онлайн ссылку.
Ledhund 10.06.2013 10:05:06
Это лучший ответ
Kolob Canyon 7.07.2016 18:06:24

использовать этот:

SHOW PROCEDURE STATUS;
15
30.10.2013 12:17:48

Как указано выше,

show procedure status;

Действительно покажет список процедур, но покажет все они, для всего сервера.

Если вы хотите видеть только те, в одной базе данных, попробуйте это:

SHOW PROCEDURE STATUS WHERE Db = 'databasename';
32
9.11.2011 09:48:58
Аналогично, ПОКАЗАТЬ СОСТОЯНИЕ ФУНКЦИИ, ГДЕ Db = 'databasename'; дает вам функции.
David A. Gray 27.02.2018 22:09:46

Более конкретный способ:

SHOW PROCEDURE STATUS 
WHERE Db = DATABASE() AND Type = 'PROCEDURE'
46
2.05.2012 22:53:43
он также будет работать без использования AND Type = 'PROCEDURE',
normalUser 2.10.2015 10:45:11

Для просмотра процедуры во имя мудрый

select name from mysql.proc 

приведенный ниже код используется для перечисления всей процедуры, а приведенный ниже код дает тот же результат, что и статус показанной процедуры

select * from mysql.proc 
87
26.10.2012 05:01:43
это намного более чистое представление, чем другие, особенно если вы находитесь в небольшом терминале. Спасибо.
user1527227 6.03.2014 20:49:13
Я развил этот ответ в select db,name,type from mysql.proc where db<>'sys';немного больше информации и меньше встроенной системы kruft.
pbnelson 16.08.2019 14:49:28

Чтобы показать только ваш:

SELECT
  db, type, specific_name, param_list, returns
FROM
  mysql.proc
WHERE
  definer LIKE
  CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));
8
29.06.2013 10:03:58
Общепринято ставить ключевые слова SQL во всех заглавных буквах, а имена столбцов, таблиц и т. Д. Ставить строчными.
Sagar 12.12.2013 20:51:16

Альтернатива:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
29
13.02.2013 16:21:26
                           show procedure status;

с помощью этой команды вы можете увидеть все процедуры в базах данных

1
22.07.2014 07:26:41

Вариант поста Правеенкумар_В:

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';
9
12.07.2016 10:26:38
SELECT specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'
8
6.01.2015 14:08:15

Используйте следующий запрос для всех процедур:

select * from sysobjects 
where type='p'
order by crdate desc
-2
11.06.2015 08:27:04

Я предпочитаю что-то, что:

  1. Перечисляет как функции, так и процедуры,
  2. Позвольте мне знать, какие есть,
  3. Дает названия и типы процедур и ничего больше ,
  4. Фильтрует результаты по текущей базе данных, а не по текущему определителю
  5. Сортирует результат

Сшивая вместе из других ответов в этой теме, я в конечном итоге

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)
21
18.04.2016 17:17:11
Комментарии тоже полезны.
dolmen 11.03.2020 12:17:03

Если вы хотите отобразить процедуру сохранения для текущей выбранной базы данных,

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";
5
22.02.2019 18:49:38

Показывает все хранимые процедуры:

SHOW PROCEDURE STATUS;

Показывает все функции:

SHOW FUNCTION STATUS;

Показывает определение указанной процедуры:

SHOW CREATE PROCEDURE [PROC_NAME];

Показывает все процедуры данной базы данных:

SHOW PROCEDURE STATUS WHERE Db = '[db_name]';
10
21.08.2019 05:37:46

Список пользователей это процедуры и функции для всех баз данных :

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`
;
0
11.03.2020 12:52:36

Мой любимый рендеринг списка процедур текущей базы данных: имя, список параметров, комментарий

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';
0
11.03.2020 12:50:50