Salesforce: 简析Database.Query, Database.getQueryLocator, Database.countQuery

我们有时候根据需求,需要编写动态的SOQl语句,这个时候我们就需要用到Database.Query, Database.getQueryLocator以及Database.countQuery

1. Database.query

运行时它将作为SOQL查询执行并返回单个sObject或sObject List

sObject so = Database.query('SELECT Id FROM Account Limit 1');

List<sObject> sobjList = Database.query('SELECT Id FROM Account');

2. Database.countQuery

有时我们需要统计动态SOQL查询返回的记录总数。在这种情况下Database.countQuery可以使用。它将以Integer格式返回count

Integer totalAccounts = Database.countQuery('SELECT count() FROM Account');

它不能用于field properties的Aggregate results。例如以下代码,它将抛出错误消息"System.QueryException: Use query() for non-count queries"

Integer totalAccounts = Database.countQuery('SELECT count(id) FROM Account');

另外,Database.countquery 最多只返回50000条记录。如果它有超过50000条记录,它会抛出错误"Too many query rows: 50001 from with count()".

3. Database.getQueryLocator

它在运行时将返回一个Query Locator, 它主要使用在batch中,或者在VF中通过分页显示一个large sets.

Query locator最多可以返回5000万条记录,通常用来处理大数据。

Database.getQueryLocator('SELECT Id FROM Account');

 

posted @ 2021-07-21 11:13  Clsriz  阅读(368)  评论(0编辑  收藏  举报