it-swarm.com.ru

Просмотр хранимой процедуры/определения функции в MySQL

Что такое команда MySQL для просмотра определения хранимой процедуры или функции, аналогично sp_helptext в Microsoft SQL Server?

Я знаю, что SHOW PROCEDURE STATUS отобразит список доступных процедур. Мне нужно увидеть определение одной процедуры.

61
Srinivas M.V.
SHOW CREATE PROCEDURE <name>

Возвращает текст ранее определенной хранимой процедуры, созданной с помощью оператора CREATE PROCEDURE. Замените PROCEDURE на FUNCTION для сохраненной функции.

95
afftee

Вы можете использовать это:

SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";
34
Haim Evgi

Если вы хотите узнать список процедур, вы можете выполнить следующую команду -

show procedure status;

Он выдаст вам список процедур и их определений Затем вы можете запустить show create procedure <procedurename>;

8
Sibashish Pujari
SHOW CREATE PROCEDURE proc_name;

возвращает определение proc_name

8
valli

что-то вроде:

DELIMITER //

CREATE PROCEDURE alluser()
BEGIN
   SELECT *
   FROM users;
END //

DELIMITER ;

чем:

SHOW CREATE PROCEDURE alluser

дает результат:

'alluser', 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER', 'CREATE DEFINER=`root`@`localhost` PROCEDURE `alluser`()
BEGIN
   SELECT *
   FROM users;
END'
5
Michel

Альтернативное быстрое и хакерское решение, если вы хотите получить обзор всех существующих процедур или столкнуться с проблемой получения только заголовка процедуры, показанного в SHOW CREATE PROCEDURE:

mysqldump --user=<user> -p --no-data --routines <database>

Он также будет экспортировать описания таблиц, но без данных. Хорошо работает, чтобы обнюхивать неизвестные или забытые схемы ...;)

1
ISparkes

Вы можете использовать таблицу proc в базе данных mysql :

mysql> SELECT body FROM mysql.proc
WHERE db = 'yourdb' AND name = 'procedurename' ;

Обратите внимание, что вы должны иметь грант для выбора mysql.proc:

mysql> GRANT SELECT ON mysql.proc TO 'youruser'@'yourhost' IDENTIFIED BY 'yourpass' ;
0
Omidreza Bagheri