我有一个表,里面有 120,000 条记录。这将是我的源表。
对于表中的每条记录,我想向 REST API 发送请求,然后进行存储过程调用。必须这样做是有原因的,我不想在这里一一详细说明。
我知道我可以使用 Lookup Activity 来执行此操作,该 Activity 将查找表(最多 5,000 个)项目,然后我可以对此数组执行 For Each 操作,并且对于 For Each 的每次迭代,我使用 Web Activity 来执行此操作发出 REST API 请求。然后调用存储过程活动。
但是,要做到这一点,我需要向存储过程或查询添加一堆分页变量(跳过等)。然后我必须有一个嵌套的 For Each (第一个 ForEach 执行分页并且查找活动位于其中。第二个 For Each 迭代页面集中的每个记录)。但是,您不能将 For Each 嵌套在另一个 ForEach 中,因此我必须创建另一个管道并从 foreach 中执行它,以执行它自己的 foreach 并将数组传递到该管道。
这种复杂的方法真的是唯一的方法吗?
这是一个非常简单的过程,执行以下操作: 对于每条记录 { 调用休息API }
由于查找有 5000 行的限制,您需要 设计一个两级管道,其中外部管道迭代内部管道,从而检索不超过最大行数或大小的数据。根据文档 .
因此,可能的解决方案是,使用带有变量的查找查询进行分页,然后将此输出传递给另一个管道参数以对其进行迭代并分别调用其余 API 和存储过程。
要对查询进行分页,您可以按照以下格式。
@string(0) - 0
的变量,如下:
@equals('120000', variables('counter'))
variables('counter')
@string(add(int(variables('tempCounter')),5000))
它将在初始值上添加 5000。