Ответ 1
SHOW CREATE PROCEDURE <name>
Возвращает текст ранее определенной хранимой процедуры, созданной с помощью инструкции CREATE PROCEDURE
. Swap PROCEDURE
для FUNCTION
для сохраненной функции.
Что такое команда MySQL для просмотра определения хранимой процедуры или функции, аналогичной sp_helptext
в Microsoft SQL Server?
Я знаю, что SHOW PROCEDURE STATUS
отобразит список доступных процедур. Мне нужно увидеть одно определение процедуры.
SHOW CREATE PROCEDURE <name>
Возвращает текст ранее определенной хранимой процедуры, созданной с помощью инструкции CREATE PROCEDURE
. Swap PROCEDURE
для FUNCTION
для сохраненной функции.
Вы можете использовать это:
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";
SHOW CREATE PROCEDURE proc_name;
возвращает определение proc_name
Если вы хотите узнать список процедур, вы можете запустить следующую команду -
show procedure status;
Он предоставит вам список процедур и их определителей
Затем вы можете запустить show create procedure <procedurename>;
что-то вроде:
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'
Альтернативное быстрое и взломанное решение, если вы хотите получить обзор всех существующих в нем продуктов или столкнуться с проблемой получения заголовка процедуры, показанного программой SHOW CREATE PROCEDURE:
mysqldump --user=<user> -p --no-data --routines <database>
Он также экспортирует описания таблиц, но никаких данных. Хорошо работает для обнюхивания неизвестных или забытых схем...;)
Отлично, попробуйте:
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";