Если вы не готовы проанализировать содержимое ROUTINE_DEFINITION в INFORMATION_SCHEMA.ROUTINES, тогда вам лучше всего выполнить процедуры и прочитать информацию столбца из возвращенных записей.
В .NET выэто можно сделать, прочитав результаты хранимой процедуры в DataTable и запросив свойство Columns .
Причина, по которой нет простого способа сделать это, заключается в том, что хранимая процедура может потенциально вернуть другой результатустанавливает на основе параметров.Не существует фиксированного формата результирующего набора, как у пользовательских функций.
Редактировать
Как уже упоминалось в другом ответе, вам нужно будет использовать SET FMTONLYON , чтобы гарантировать, что данные не возвращаются.В некоторых ситуациях SET FMTONLY не будет работать, например, при использовании таблиц #temp в ваших хранимых процедурах, но есть обходной путь .