代码之家  ›  专栏  ›  技术社区  ›  Brandon

赋值中包含isNull的存储过程调用。无效语法?

  •  7
  • Brandon  · 技术社区  · 14 年前

    上面对这个存储过程的调用是对另一个存储过程的另一个调用。第一个过程将为 @NewIdentifier 如果需要,否则我需要使用默认值 SaleId .

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

    如果我这样做的话它会起作用的

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

    可以用吗 ISNULL 在存储过程参数的赋值中?我不确定这种语法的无效之处。

    2 回复  |  直到 14 年前
        1
  •  8
  •   Joe Stefanelli    14 年前

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

        2
  •  0
  •   Mike Hewett    14 年前

    “=”运算符的优先级是否可能低于“(”?如果是这样,它将被解析为 exec mystoredproc(@saleid=isnull)(@newidentifier,@saleid) ,这将是一个语法错误。