上面的呼叫到该存储过程是对不同的存储过程另一个呼叫。如果需要的第一个程序将分配东西@NewIdentifier,否则我需要使用默认SaleId

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

它的工作原理,如果我这样做,这样

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

时有可能使用ISNULL在存储过程参数的分配?我不知道什么是关于这个语法无效。

有帮助吗?

解决方案

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top