Допустим, вы запустили агрегированный запрос SOQL , который выглядит следующим образом:
select OwnerId, sum(ExpectedRevenue)val from Opportunity GROUP BY ROLLUP(OwnerId)
По какой-то причине нет никаких Полей с заполненными полями ExpectedRevenue.
Вы получаете таблицу, которая выглядит следующим образом:
val ___ | OwnerId
|Id1
|Id2
|Id3
4/4 записи.
(sidenote: как поместить табличные данные, чтобы они не выглядели ужасно?)
Обратите внимание, что все столбцы "val" равны нулю, а последний столбец OwnerId также равен нулю.
Имеется 4 строки, потому что SOQL возвращает также "итоговую" строку для сверток.
При циклическом возврате возвращаемого AggregateResult [] код взрывается в строке, которая выглядит следующим образом: AggregateResult[0] .get ( 'Val');с «System.NullPointerException: попытка де-ссылки на нулевой объект»
Однако, если только у одного из этих пользователей есть какие-то данные, то все это работает.Так что я предполагаю, что если в каком-либо столбце нет строк с данными, этот столбец вообще не существует, и вызовы для его извлечения всплывают.
Поэтому мой вопрос: как определить, существует ли столбец?чтобы избежать ошибки нулевой ссылки?