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

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

15 ответов


SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS;

show procedure status

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

show create procedure MY_PROC

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

help show

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


для процедуры просмотра в name wise

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

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

  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)

используйте этот:

SHOW PROCEDURE STATUS;

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

SELECT
  db, type, specific_name, param_list, returns
FROM
  mysql.proc
WHERE
  definer LIKE
  CONCAT('%', CONCAT((SUBSTRING_INDEX((SELECT user()), '@', 1)), '%'));

вариант сообщения 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 specific_name FROM `information_schema`.`ROUTINES` WHERE routine_schema='database_name'

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

SHOW PROCEDURE STATUS WHERE Db = DATABASE();

он будет перечислять подпрограммы на основе текущей выбранной базы данных


SHOW PROCEDURE STATUS;

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

SHOW FUNCTION STATUS;

показывает все функции.

SHOW CREATE PROCEDURE [PROC_NAME];

покажет определение указанной процедуры.

SHOW PROCEDURE STATUS WHERE Db = '[db_name]';

покажет вам все процедуры данной базы данных.


                           show procedure status;

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


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

select * from sysobjects 
where type='p'
order by crdate desc