Вызов хранимой процедуры с 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), что будет синтаксической ошибкой.