2010-09-30 1 views
7

Выше вызова этой хранимой процедуры является другой вызов другой хранимой процедуры. Первая процедура назначит что-то @NewIdentifier, если это необходимо, в противном случае мне нужно использовать значение по умолчанию SaleId.Сохраненный вызов процедуры с ISNULL в задании. Недопустимый синтаксис?

exec myStoredProc @SaleId = ISNULL(@NewIdentifier, @SaleId) 

Это работает, если я сделать это таким образом

declare @Id int 
set @Id = ISNULL(@NewIdentifier, @SaleId) 
exec myStoredProc @SaleId = @Id 

Можно ли использовать ISNULL в присвоении параметра хранимой процедуры? Я не уверен, что недействительно в этом синтаксисе.

ответ

8

Параметр должен быть константой или переменной. Он не может быть выражением.

+0

Ах, я вижу. Спасибо, Джо. – Brandon

0

Возможно ли, что оператор '=' имеет более низкий приоритет, чем '('? Если да, то это будет разобрано как ехес myStoredProc (@SaleId = ISNULL) (@NewIdentifier, @SaleId), который был бы синтаксическая ошибка

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