SalesForce对SOQL的限制?

时间:2012-10-11 06:58:15

标签: salesforce soql

使用我的salesforce PHP库运行:

SELECT ... FROM Account LIMIT 100

但LIMIT总是限制在25个记录。我选择了许多领域(60个领域)。这是一个具体的限制吗?

骨架代码:

$client = new SforceEnterpriseClient();
$client->createConnection("EnterpriseSandboxWSDL.xml");
$client->login(USERNAME, PASSWORD.SECURITY_TOKEN);

$query = "SELECT ... FROM Account LIMIT 100";
$response = $client->query($query);

foreach ($response->records as $record) {
   // ... there's only 25 records
}

4 个答案:

答案 0 :(得分:0)

我没有为Salesforce使用PHP库。但我可以在做之前假设

SELECT ... FROM Account LIMIT 100

已执行更多选择查询。如果您不对它们进行编码,那么PHP库可能会为您执行此操作; - )

答案 1 :(得分:0)

Salesforce soap API query方法只返回有限数量的行。有几个原因导致它的返回量低于你定义的限制。

  1. QueryOptions header batchSize已设置为25.如果是这种情况,您可以尝试调整它。如果尚未明确设置,您可以尝试将其设置为更大的值。
  2. 当SOQL语句选择多个大字段(例如两个或多个长文本类型的自定义字段)时,Salesforce可能返回的记录少于batchSize中定义的记录。处理base64编码字段(例如Attachment.Body)时也会出现批量大小的减少。如果是这种情况,您可以在第一个响应中使用queryMore和QueryLocator。
  3. 在这两种情况下,请检查QueryResult的done和size属性的done和size属性,以确定是否需要使用queryMore以及与SOQL查询匹配的总行数。

答案 2 :(得分:0)

这是我的检查清单

1)确保您有超过25条记录

2)在你的第一个循环之后执行queryMore以检查是否有更多记录

3)确保batchSize未设置为25

答案 3 :(得分:0)

要避免调控器限制,最好将所有记录添加到列表中,然后执行您需要对列表中的记录执行的所有操作。完成后,使用:update listName;

更新数据库