赋值中带有 ISNULL 的存储过程调用。语法无效?

发布于 2024-09-25 11:29:00 字数 399 浏览 1 评论 0原文

对此存储过程的调用之上是对另一个存储过程的另一个调用。如果需要,第一个过程将向 @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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苯莒 2024-10-02 11:29:00

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

The parameter must be a constant or a variable. It cannot be an expression.

缱绻入梦 2024-10-02 11:29:00

'=' 运算符的优先级是否可能低于 '(' ?如果是这样,它将被解析为 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文