7

在对这个存储过程的调用之上是对不同存储过程的另一个调用。如果需要,第一个过程将分配一些东西@NewIdentifier,否则我需要使用默认的SaleId.

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

如果我这样做,它会起作用

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

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

4

2 回答 2

8

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

于 2010-09-30T22:00:04.757 回答
0

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

于 2010-09-30T21:59:45.460 回答