在分配中使用ISNULL调用存储过程。无效的语法?

时间:2010-09-30 21:54:45

标签: sql-server syntax isnull

对此存储过程的调用之上是另一个对不同存储过程的调用。如果需要,第一个过程会将内容分配给@NewIdentifier,否则我需要使用默认的SaleId

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

如果我这样做就行了

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

是否可以在分配存储过程参数时使用ISNULL?我不确定这种语法无效。

2 个答案:

答案 0 :(得分:8)

参数必须是常量或变量。它不能是一种表达。

答案 1 :(得分:0)

'='运算符的优先级是否低于'('?如果是,它将被解析为 exec myStoredProc(@SaleId = ISNULL)(@ NewIdentifier,@ SaleId) ,这将是语法错误。