Определите, имеет ли параметр SP значение по умолчанию в T-SQL

Есть ли способ определить из SQL Server (я нахожусь на 2012 год), если параметры SP имеют значения по умолчанию? ЕстьДругие потоки на этом, однако, предложения, кажется, не получают мне эту информацию точно.

Вот несколько вещей, которые я пробовал;

select *
from sys.objects so join sys.parameters sp on so.object_id = sp.object_id
where so.type='P'
and so.name = 'someSp'

Приведенный выше запрос возвращает количество столбцов, которые звучат так, будто я лаю на нужное дерево (среди них has_default_value, default_value)но похоже, они не меняются, есть ли у меня значение по умолчанию в моем SP или нет. (значение has_default всегда равно 0, значение по умолчанию всегда равно нулю)

exec sp_sproc_columns 'someSp'

Та же сделка; вышеуказанный SP возвращает количество столбцов, включая NULLABLE и IS_NULLABLE; NULLABLE всегда равен 1 и IS_NULLABLE = YES, независимо от содержимого моего SP.

Заметка; Студия управления SQL Server четко отображает метаданные, связанные с каждым параметром SP.

Я использовал SQL Profiler для проверки того, что происходит при просмотре параметров SP в обозревателе объектов Management Studio. При развертывании папки параметров выполняются два запроса. Первый запрос немного длинен для вставки сюда (хотя я сделаю это, если будет полезно). Он содержит столбец с именем DEFAULT VALUE; однако это всегда NULL, насколько я могу судить. Второй запрос просто возвращает тело SP; предположительно для вывода в окно текстового редактора (хотя, боюсь, в студии mgmt может произойти какой-то анализ!)

Для справки / просто чтобы убедиться, что я не теряю свои шарики, я создал два бессмысленных Sps только для тестирования. Они похожи:

CREATE PROCEDURE TestDefaultSpValue_Default
@I          INT  = 2
AS
BEGIN
SET NOCOUNT ON;
SELECT @I
END

CREATE PROCEDURE TestDefaultSpValue_NoDefault
@I          INT
AS
BEGIN
SET NOCOUNT ON;
SELECT @I
END

Ответы на вопрос(3)

Ваш ответ на вопрос