- Apex 编程教程
- 顶点 - 主页
- Apex - 概述
- 顶点 - 环境
- 顶点 - 示例
- Apex - 数据类型
- Apex - 变量
- Apex - 弦乐
- Apex - 数组
- Apex - 常量
- Apex - 决策
- 顶点 - 循环
- Apex - 集合
- Apex - 课程
- Apex - 方法
- Apex - 对象
- Apex - 接口
- Apex-DML
- Apex - 数据库方法
- 顶点 - SOSL
- 顶点-SOQL
- 顶点 - 安全
- Apex - 调用
- Apex - 触发器
- Apex - 触发器设计模式
- Apex - 调节器限制
- Apex - 批处理
- Apex - 调试
- Apex - 测试
- Apex - 部署
- Apex 有用资源
- Apex - 快速指南
- Apex - 资源
- Apex - 讨论
顶点 - SOSL
每个企业或应用程序都将搜索功能作为基本要求之一。为此,Salesforce.com 提供了两种使用 SOSL 和 SOQL 的主要方法。让我们在本章中详细讨论 SOSL 方法。
SOSL
跨对象和跨字段搜索文本字符串将使用 SOSL 完成。这是 Salesforce 对象搜索语言。它具有跨多个对象搜索特定字符串的能力。
SOSL 语句计算为 sObject 列表,其中每个列表包含特定 sObject 类型的搜索结果。结果列表始终按照 SOSL 查询中指定的顺序返回。
SOSL 查询示例
考虑一个业务案例,其中我们需要开发一个可以搜索指定字符串的程序。假设,我们需要在发票对象的客户名称字段中搜索字符串“ABC”。代码如下 -
首先,您必须在发票对象中创建一条客户名称为“ABC”的记录,以便我们在搜索时可以获得有效的结果。
// Program To Search the given string in all Object // List to hold the returned results of sObject generic type List<list<SObject>> invoiceSearchList = new List<List<SObject>>(); // SOSL query which will search for 'ABC' string in Customer Name field of Invoice Object invoiceSearchList = [FIND 'ABC*' IN ALL FIELDS RETURNING APEX_Invoice_c (Id,APEX_Customer_r.Name)]; // Returned result will be printed System.debug('Search Result '+invoiceSearchList); // Now suppose, you would like to search string 'ABC' in two objects, // that is Invoice and Account. Then for this query goes like this: // Program To Search the given string in Invoice and Account object, // you could specify more objects if you want, create an Account with Name as ABC. // List to hold the returned results of sObject generic type List<List<SObject>> invoiceAndSearchList = new List<List<SObject>>(); // SOSL query which will search for 'ABC' string in Invoice and in Account object's fields invoiceAndSearchList = [FIND 'ABC*' IN ALL FIELDS RETURNING APEX_Invoice__c (Id,APEX_Customer__r.Name), Account]; // Returned result will be printed System.debug('Search Result '+invoiceAndSearchList); // This list will hold the returned results for Invoice Object APEX_Invoice__c [] searchedInvoice = ((List<APEX_Invoice_c>)invoiceAndSearchList[0]); // This list will hold the returned results for Account Object Account [] searchedAccount = ((List<Account>)invoiceAndSearchList[1]); System.debug('Value of searchedInvoice'+searchedInvoice+'Value of searchedAccount' + searchedAccount);
SOQL
这与 SOQL 几乎相同。您可以使用它一次仅从一个对象中获取对象记录。您可以编写嵌套查询,也可以从您现在正在查询的父对象或子对象中获取记录。
我们将在下一章探讨 SOQL。