Возможно ли получить информацию хранимой процедуры, такую как name
, parameter nane/position/type
из информационной схемы в MySQL или возможно каким-то другим способом?MySQL: Может ли информация хранимой процедуры извлекаться из информационной схемы?
ответ
Вы можете получить много информации, включая имя, от INFORMATION_SCHEMA.ROUTINES
. See the MySQL Manual for details.
Информация о параметрах будет содержаться в INFORMATION_SCHEMA.PARAMETERS
таблице, но эта таблица не доступна в MySQL, так что я не уверен, что вы можете получить эту информацию от INFORMATION_SCHEMA
.
Если вам нужен список аргументов, вы можете выбрать имена процедур от INFORMATION_SCHEMA.ROUTINES
, а затем получить операторы CREATE PROCEDURE
для каждого из них, используя SHOW CREATE PROCEDURE
. Если вам просто нужны аргументы и типы, вы должны иметь возможность анализировать их без особых проблем.
Я считаю, что что-то вроде того, что вы ищете, возможно с помощью встроенной в MySQL программы резервного копирования: mysqldump. Дайте это попробовать:
mysqldump --routines --triggers --nodata --skip-opt YOURDB
Подробности: Быстрый взгляд на documentation (MySQL 5.4) показывает, вы определенно хотите, чтобы запустить его с опцией --routines
, а также, вероятно, --triggers
. Я предполагаю, что вы захотите пропустить большую часть данных на этом дампе, просто посмотрите на процедуры, и в этом случае вам могут понадобиться опции --nodata --skip-opt
и, возможно, некоторые другие параметры, которые я еще не определил. Ознакомьтесь с документацией для своей версии для любых других параметров, которые вы хотите. Также обратите внимание, что вы можете указать только некоторые из таблиц в БД, добавив их имена в конец.
Спасибо за то, что подумал, я думаю, что решений Джеймса достаточно, но я обязательно посмотрю на это! – Ropstah
INFORMATION_SCHEMA.PARAMETERS, похоже, не существует ..? – Ropstah
Нет. Это _was_ в MySQL 6, но он никогда не был обращен к MySQL 5. –
grrrr, так что никак нельзя генерировать классы хранимых процедур из базы данных? – Ropstah