Как получить хранимую процедуру возвращаемых столбцов, не зная входных параметров?
Я хочу виртуально выполнить хранимую процедуру и получить возвращенные столбцы. я использую fmtonly
как ниже:
set fmtonly on
exec spName null
set fmtonly off
но использование fmtonly приводит к запуску всех строк кода, и результатом этой работы является ОШИБКА. Есть ли решение для этой работы?
1 ответ
Вам нужно использовать sp_describe_first_result_set
который является новым для SQL Server 2012. Обратите внимание, что для этого необходимо указать входные параметры (по крайней мере, типы).
В разработке T-SQL ожидается, что вы будете знать, какие процедуры вызываются и каков ожидаемый набор результатов. До SQL Server 2012 было очень мало поддержки для динамического, времени выполнения, обнаружения вывода процедуры и требуемых параметров. Эта новая процедура, наряду с другими, как sp_describe_undeclared_parameters
может использоваться для создания инструментов, которые должны изучить доступную поверхность API программирования. Сам факт того, что они были добавлены к 2012 году, должен указывать на то, что эквивалент не может быть должным образом обработан до 2012 года. Такие решения, как серверы с обратной связью, имеют много проблем, в первую очередь потому, что они на самом деле выполняют код с потенциальными катастрофическими последствиями.