2009-07-28 5 views
2

Я хотел бы получить количество аргументов, необходимых для хранимой процедуры в MySql. Это возможно?Получить количество аргументов для хранимой процедуры

Моя первая мысль была попробовать

SELECT * FROM information_schema.ROUTINES; 

, но в нем не лежит никакой информации о количестве аргументов, насколько я могу видеть. Следующая попытка:

SHOW PROCEDURE STATUS; 

, но это похоже на то, что возвращает подмножество первого запроса.

Моя цель состоит в том, чтобы быть в состоянии «NULL-подушечка» а sproc вызов в PHP, чтобы избежать ошибок, как

"Incorrect number of arguments for PROCEDURE schema.table; expected nn, got mm 

Чтобы создать статическую таблицу поиска, конечно, работа, но это, конечно, не желательны. И, конечно, можно было бы разобрать полученное сообщение, изменить запрос и повторить попытку, но это тоже не очень приятно.

Заранее благодарен!/Victor

ответ

1

Вы можете получить список параметров с помощью:

SELECT DISTINCT имя, param_list ОТ mysql.proc WHERE дб = DATABASE();

+0

Спасибо! Все еще немного неудобный формат, но, по крайней мере, вся информация есть и разборчива. Позор, это только так хорошо, как строка, используемая для создания процедуры (IN/OUT/INOUT может быть опущена, например). – Victor

0

ПОКАЗАТЬ ПРОЦЕДУРА СОЗДАНИЯ < имя_организации >;

http://dev.mysql.com/doc/refman/5.0/en/show-create-procedure.html

+0

Спасибо за ответ, но, к сожалению, заявление, похоже, имеет два недостатка. 1: Он возвращает процедуру _entire_ - требуется сильная разборка и много ненужных данных. 2: Он требует, чтобы вы были создателем функции, иначе часть «Создать процедуру» имеет значение null и никакая информация не может быть извлечена. Спасибо в любом случае!/Victor – Victor