赋值中带有 ISNULL 的存储过程调用。语法无效?
对此存储过程的调用之上是对另一个存储过程的另一个调用。如果需要,第一个过程将向 @NewIdentifier
分配一些内容,否则我需要使用默认的 SaleId
。
exec myStoredProc @SaleId = ISNULL(@NewIdentifier, @SaleId)
如果我这样做,它就可以工作
declare @Id int
set @Id = ISNULL(@NewIdentifier, @SaleId)
exec myStoredProc @SaleId = @Id
是否可以在存储过程参数的分配中使用ISNULL
?我不确定这个语法有什么是无效的。
Above the call to this stored procedure is another call to a different stored procedure. The first procedure will assign something to @NewIdentifier
if it needs to, otherwise I need to use the default SaleId
.
exec myStoredProc @SaleId = ISNULL(@NewIdentifier, @SaleId)
It works if I do it this way
declare @Id int
set @Id = ISNULL(@NewIdentifier, @SaleId)
exec myStoredProc @SaleId = @Id
Is it possible to use ISNULL
in the assignment of a stored procedure parameter? I'm not sure what is invalid about this syntax.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
参数必须是常量或变量。它不能是一个表达式。
The parameter must be a constant or a variable. It cannot be an expression.
'=' 运算符的优先级是否可能低于 '(' ?如果是这样,它将被解析为 exec myStoredProc (@SaleId = ISNULL) (@NewIdentifier, @SaleId),这将是一个语法错误。
Is it possible that the '=' operator has lower precedence than '(' ? If so, it would be parsed as exec myStoredProc (@SaleId = ISNULL) (@NewIdentifier, @SaleId), which would be a syntax error.