Список хранимых процедур / функций Командная строка Mysql
Как я могу просмотреть список хранимых процедур или хранимых функций в командной строке mysql, например show tables;
или show databases;
команды.
- Как запланировать хранимую процедуру в MySQL
- Обработка ошибок хранимой процедуры MySQL
- Триггеры MySQL не могут обновлять строки в той же таблице, которой назначен триггер. Предлагаемое решение?
- Сохраненная процедура, которая автоматически удаляет строки старше 7 дней в MYSQL
- Как установить значение составного поля переменных с помощью динамического SQL
- Могу ли я создать представление с параметром в MySQL?
- хранимая процедура mysql, которая называет себя рекурсивно
- Как вы отлаживаете хранимые процедуры MySQL?
SHOW PROCEDURE STATUS; SHOW FUNCTION STATUS;
show procedure status
покажет вам хранимые процедуры.
show create procedure MY_PROC
покажет вам определение процедуры. А также
help show
покажет вам все доступные параметры команды show
.
Процедура просмотра в названии
select name from mysql.proc
ниже код, используемый для enums всей процедуры и ниже кода, дает тот же результат, что и статус процедуры показа
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;
Чтобы показать только ваши:
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