课程章节介绍
同学们,大家好,我是你们的Salesforce老师。今天我们来聊聊Apex里一个特别实用的功能——在SOQL和SOSL查询中绑定变量。
先说什么叫绑定啊。简单说,就是你可以在SOQL或SOSL语句里,直接引用Apex代码里的变量或表达式,只要在变量前面加一个冒号就行。注意,是英文的冒号,别打成别的了。这个冒号就像一座小桥,把代码里的值,稳稳地送进查询语句里。这个过程,我们就叫它“绑定”。
那执行的时候是怎么工作的呢?Apex的解释器会先瞅一眼你的代码,把那个局部变量的值算出来,然后才拿着这个结果去执行SOQL或SOSL。也就是说,查询还没跑呢,变量就已经变成具体的值了。这就杜绝了很多安全风险,比如SOQL注入。
那具体哪些地方能用绑定呢?范围还挺广的。比如FIND子句里的搜索字符串,你可以绑一个动态的关键词进去;WHERE子句里面过滤条件用的值,也可以绑,像 `WHERE Name = :accountName` 这样;还有IN或者NOT IN里面那一串值,也能绑一个列表;甚至连LIMIT后面的数字、OFFSET后面的偏移量,都可以用变量来控制。另外,像什么分区名称这类特殊的地方,也支持绑定,只是用得少一些,大家知道就行。
列表绑定也很好用。你可以直接绑一个sObject对象的列表,Apex会自动把每个对象里的Id字段提取出来,拼成一个ID集合扔进查询,特别聪明。字符串列表当然更不在话下,直接绑进去就行。
还有个细节,SOSL呢,它更灵活,你可以在查询的多个子句里,统统使用绑定变量,一口气搞定动态搜索。
不过呀,有个小坑要提醒大家:在涉及地理位置计算的距离函数里,那个单位参数是不能绑定的。什么意思呢?比如你要算距离,单位是英里或者公里,这个‘mi’或者‘km’必须直接写死在字符串里,不能用变量来代替。记住这个小限制,写代码时别踩雷。
好了,总结一下,绑定变量是日常开发中非常高频的用法,能让你的查询既动态又安全。今天的课就到这里,大家以后写SOQL和SOSL的时候,放心大胆地用冒号去绑定吧,多练练手,自然就熟了。我们下节课见!
关键词
Apex
Salesforce
Developer Guide