Вызов хранимой процедуры с ISNULL в назначении. Неверный Синтаксис?


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

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

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

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

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

2 7

2 ответа:

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

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