Что представляет собой команда MySQL для просмотра определения хранимой процедуры или функции, как sp_helptext
в Microsoft SQL Server?
Я знаю, что SHOW PROCEDURE STATUS
отобразится список доступных процедур. Мне нужно увидеть определение одной процедуры.
mysql
stored-procedures
stored-functions
Шринивас М.В.
источник
источник
Ответы:
SHOW CREATE PROCEDURE <name>
Возвращает текст ранее определенной хранимой процедуры, созданной с помощью
CREATE PROCEDURE
оператора. ЗаменитьPROCEDURE
наFUNCTION
сохраненную функцию.источник
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Вы можете использовать это:
SELECT ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA = 'yourdb' AND ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = "procedurename";
источник
mysql.proc
возвращает капли дляparam_list
,returns
иbody
... Я не могу их прочитать ... Как вы это сделали?SELECT * FROM information_schema.PARAMETERS WHERE SPECIFIC_SCHEMA='$dbName' AND SPECIFIC_NAME=\"{$row['ROUTINE_NAME']}\" AND NOT PARAMETER_MODE IS NULL ORDER BY ORDINAL_POSITION;
SHOW CREATE PROCEDURE proc_name;
возвращает определение
proc_name
источник
Если вы хотите узнать список процедур, вы можете запустить следующую команду -
show procedure status;
Он предоставит вам список процедур и их определителей. Затем вы можете запустить
show create procedure <procedurename>;
источник
Вы можете использовать table 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' ;
источник
что-то вроде:
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";
источник