Working with Query Results — Field Selection & Dereferencing

DEX455 - Apex SOQL 与 SOSL 查询完全指南

📄 第 181 页 🎬 视频课程

课程章节介绍

大家好,今天我们来看看SOQL和SOSL查询中一个非常容易踩坑的地方——字段访问和解引用的规则。 首先,SOQL查询只会把你写进SELECT语句里的字段数据给拉回来。比如说,你查账户只选了名称,那结果里就只有名称有值。如果你在代码里不小心去访问一个没选的字段,除了ID这个特殊字段之外,就会立刻报运行时错误。记住,ID是个例外,就算你没把它写在SELECT里,也能安全读取。 那你怎么从查询结果里拿到想要的字段值呢?查询返回的其实是一个完整的记录对象,哪怕只选了一个字段,它也是个对象。你必须通过“解引用”,也就是用点号,比如`acc.Name`,才能把值取出来。 这里有一个非常特别的例外:收件箱查询。这种查询直接给你返回收件箱对象,你完全不需要解引用就能使用。但是,SOSL查询就不同了,SOSL返回的结果无论如何都必须解引用,才能拿到具体的记录和字段。 最后再说一点公式字段的行为。公式字段的值是查询时才动态算出来的。如果你在代码里改了公式依赖的基础字段,但没有保存并重新查询这条记录,公式字段给你返回的还是旧值,不会自动变新。一定要重新从数据库里拉一次,才能看到最新的变化。 好了,这几个点看似简单,但实际写代码时很容易疏忽,大家一定要记牢。

关键词

Apex Salesforce Developer Guide