2

我对 Apex 批处理文档中的这一段有困难。这是关于我还没有了解的查询游标。有人可以解释一下 QC 和这里发生了什么吗?

用户一次最多可以打开 50 个查询游标。例如,如果打开了 50 个游标,并且客户端应用程序仍然登录,而同一用户尝试打开新游标,则释放 50 个游标中最早的一个。请注意,此限制与批处理 Apexstart 方法不同,每个用户一次最多可以打开五个查询游标。其他批处理 Apex 方法的上限为 50 个游标。

不同 Force.com 功能的光标限制单独跟踪。例如,您可以同时打开 50 个 Apex 查询游标、50 个批处理游标和 50 个 Visualforce 游标。

4

1 回答 1

3

我理解查询游标返回一个批处理和锁定的记录列表(锁定,在某种意义上,其他更新/编辑,例如批处理 Apex 之外,只要正在使用的记录就被阻止)。通常,查询游标在 Apex 中由Database.getQueryLocator方法返回。

记录不是一次全部返回,而是分成多批数据。如果有 500 条记录,可能只返回前 200 条(这由批处理范围/大小决定,默认为 200),然后批处理执行代码将再次运行第二个 200 条,最后一次运行100 条记录。相同的概念适用于Visualforce 分页Database.getQueryLocator(请注意示例中标准控制器初始化中使用的调用)。

关于限制,基本上,您只能Database.getQueryLocator同时打开/运行 50 个调用、50 个批处理 Apex 类和 50 个带有分页(使用示例中描述的方法)的 Visualforce 页面(此限制曾经是 5;50是一个巨大的进步)。

于 2012-06-15T19:00:26.553 回答