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

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

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

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

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

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

2 ответа

Решение

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

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

Другие вопросы по тегам