2010-09-30 10 views
7

Por encima de la llamada a este procedimiento almacenado hay otra llamada a un procedimiento almacenado diferente. El primer procedimiento asignará algo al @NewIdentifier si es necesario, de lo contrario, necesito usar el predeterminado SaleId.Llamada de procedimiento almacenado con un ISNULL en la asignación. ¿Sintaxis inválida?

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

Funciona si lo hago de esta manera

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

¿Es posible utilizar ISNULL en la asignación de un parámetro de procedimiento almacenado? No estoy seguro de qué es inválido sobre esta sintaxis.

Respuesta

8

El parámetro debe ser una constante o una variable. no puede ser una expresión.

+0

Ah, veo. Gracias Joe. – Brandon

0

¿Es posible que el operador '=' tiene menor precedencia que '('? Si es así, sería analizado como mystoredproc exec (@SaleId = ISNULL) (@NewIdentifier, @SaleId), lo que sería un error de sintaxis.

Cuestiones relacionadas