假设您运行如下所示的SOQL聚合查询:
select OwnerId, sum(ExpectedRevenue)val from Opportunity GROUP BY ROLLUP(OwnerId)
无论出于何种原因,都没有填充 ExpectedRevenue 字段的机会。
你会得到一个如下所示的表:
val___|所有者 ID
|Id1 |Id2 |Id3
4/4 记录。
(旁注:你如何输入表格数据而不会让它看起来很糟糕?)
请注意,“val”列全部为空,最后一个 OwnerId 列也为空。
有 4 行,因为 SOQL 在汇总时也返回“总计”行。
在循环通过返回的 AggregateResult[] 时,代码会在如下所示的行上爆炸: AggregateResult[0].get('val'); 带有“System.NullPointerException:尝试取消引用空对象”
但是,如果其中只有 1 个用户有一些数据,那么整个事情就可以了。所以我猜测如果在特定列中没有行有任何数据,那么该列根本不存在,并且调用检索它会爆炸。
所以我的问题是如何确定列是否存在以避免空引用错误?