2012-02-06 2 views
3

Я знаю, что это легко выйти на улицу, как:Как получить список параметров внутри хранимой процедуры самой

select * from sys.parameters 
where object_id in 
     (select object_id from sys.procedures where name = 'YourSProc') 

Но если у меня есть SP, который имеет дополнительный параметр со значением по умолчанию, как я могу знать, является ли параметр действительно устанавливается, если значение параметра param = param по умолчанию?

как

create procedure sp1 
@userid=1, 
@passwd=null, 
as 
bla..bla 
Go 

В самой хранимой процедуре, как я могу знать, является ли пользователь с именем

exec sp1 @userid=1, @passwd=null 

или

exec sp2 @userid=2 

Есть ли глобальная переменная, как @@ paramlist, который может предоставить список параметров?

+0

В чем вы работаете? – JeffO

+0

Вы не можете легко (если вообще). Зачем вам это нужно? –

+0

@JeffO, я использую MSSQL. – orange

ответ

1

Не совсем то, что вы ищете, но что, если вместо дефолта с нулевым значением по умолчанию задано какое-то маловероятное и секретное значение дозорного значения - возможно, GUID. Затем вы должны проверить свой SP, если параметр был установлен в GUID, что означает, что параметр был установлен по умолчанию или установлен на что-либо еще, и в этом случае пользователь поставил его.

+0

это, вероятно, отлично подходит для некоторых полей. Как я могу установить секретное значение часового для nullable bool? – orange

+0

В этом заключается слабость моего подхода. Мне нравится предложение Мартина Смита честно. – dsolimano

+0

Спасибо, ребята. Я думаю, что решение MartinSmith хорошо для меня. – orange

Смежные вопросы