Я занимаюсь разработкой приложения на PHP, связанного с SQL Server 2008 R2, мое требование состоит в получении списка параметров ввода / вывода (METADATA) из процедуры (процедур) и создании форм времени выполнения на экране. У меня есть около пятидесяти сценариев, например получить детали заказа, получить отложенные ордера и т. д.
Поэтому вместо разработки этих 50 экранов я решил создать эти формы во время выполнения. Теперь я немного погуглил свою проблему и узнал, что эта функция предоставляется в SQL Server 2012 с помощью sp_describe_first_result_set. Ссылка: ссылка на сайт
Есть ли способ добиться этого в SQL Server 2008?
Следующий запрос возвращает список хранимых процедур и их параметров из текущей базы данных:
select pr.object_id [procedure_id]
, pr.name [procedure_name]
, p.parameter_id
, p.name [parameter_name]
, p.is_output
from sys.parameters p
join sys.procedures pr on p.object_id = pr.object_id
order by pr.object_id, p.parameter_id
Ты можешь использовать SET FMTONLY выполнить хранимые процедуры, у которых есть наборы результатов с возвращаемыми только метаданными. Это возвращает только метаданные клиенту. Может использоваться для проверки формата ответа без фактического выполнения запроса. На самом деле, в MSDN написано, что не используйте это, потому что оно было заменено на sp_describe_first_result_set (в 2012 году), так что пошли.
Чтобы получить метаданные о параметрах хранимого процесса, лучше всего использовать
SELECT * FROM INFORMATION_SCHEMA.Parameters