2010-09-30 17 views
7

Au-dessus de l'appel de cette procédure stockée se trouve un autre appel à une procédure stockée différente. La première procédure affectera quelque chose à @NewIdentifier si nécessaire, sinon je dois utiliser la valeur par défaut SaleId.Appel de procédure stockée avec un ISNULL dans l'affectation. Syntaxe invalide?

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

Il fonctionne si je le fais de cette façon

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

Est-il possible d'utiliser ISNULL dans l'attribution d'un paramètre de procédure stockée? Je ne suis pas sûr de ce qui est invalide à propos de cette syntaxe.

Répondre

8

Le paramètre doit être une constante ou une variable, il ne peut pas s'agir d'une expression

+0

Ah, je vois, merci Joe. – Brandon

0

Est-il possible que le '=' opérateur a priorité inférieur à '('? Dans ce cas, il serait analysé comme exec myStoredProc (@SaleId = ISNULL) (@NewIdentifier, @SaleId), qui serait une erreur de syntaxe