2010-09-30 3 views
7

Oberhalb des Aufrufs dieser gespeicherten Prozedur befindet sich ein anderer Aufruf einer anderen gespeicherten Prozedur. Die erste Prozedur wird @NewIdentifier etwas zuweisen, wenn es nötig ist, ansonsten muss ich den Standard SaleId verwenden.Gespeicherter Prozeduraufruf mit einem ISNULL in der Zuordnung. Ungültiger Satzbau?

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

Es funktioniert, wenn ich es tun auf diese Weise

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

Ist es möglich ISNULL bei der Zuordnung der Parameter einer gespeicherten Prozedur zu benutzen? Ich bin nicht sicher, was an dieser Syntax ungültig ist.

Antwort

8

Der Parameter eine konstante oder eine Variable sein muss. Es ist nicht ein Ausdruck sein kann.

+0

Ah, ich verstehe. Danke Joe. – Brandon

0

Ist es möglich, dass der '=' Operator niedrigere Priorität als hat '('? Wenn ja, würde es als exec myStoredProc analysiert werden (@SaleId = ISNULL) (@NewIdentifier, @SaleId), das wäre ein Syntaxfehler.