Вызов хранимой процедуры с ISNULL в присваивании.Неверный синтаксис? - PullRequest
7 голосов
/ 01 октября 2010

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

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

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

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

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

Ответы [ 2 ]

8 голосов
/ 01 октября 2010

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

0 голосов
/ 01 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...