Skip to main content

Executar consultas SOQL e SOSL

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:
  • Executar uma consulta SOQL usando o editor de consulta ou no código do Apex.
  • Executar uma pesquisa SOSL usando o editor de consulta ou no código do Apex.
Nota

Nota

Deseja aprender em português (Brasil)? Comece o desafio em um Trailhead Playground de português (Brasil) e copie e cole os valores de português (Brasil). Se você não passar no desafio em sua organização de português (Brasil), recomendamos que (1) mude o local para os Estados Unidos, (2) mude o idioma para inglês, seguindo as instruções aqui, e (3) clique novamente no botão “Validar o desafio”.

Consulte o emblema Trailhead no seu idioma para saber mais sobre como aproveitar a experiência de Trailhead em outros idiomas.

O que é uma consulta SOQL?

SOQL significa Salesforce Object Query Language (Linguagem de consulta do Salesforce Object). Você pode usar SOQL para ler informações armazenadas no banco de dados de sua organização. A SOQL é sintaticamente similar à SQL (Structured Query Language, Linguagem de consulta estruturada).

Você pode escrever e executar uma consulta SOQL no código do Apex ou no editor de consulta do Developer Console.

Executar uma consulta SOQL

Antes de começarmos a escrever e executar consultas, você precisa de alguns dados em sua organização do Salesforce pelos quais possamos pesquisar. Vamos adicionar os detalhes de contato de três Engenheiros de controle enviados pelo Controle da missão para guiar sua nave espacial para longe do asteroide 2014 QO441.
  1. Selecione Debug (Depurar) | Open Execute Anonymous Window (Abrir janela Executar no modo anônimo).
  2. Copie o seguinte código, cole-o e execute-o. Esse código adiciona os detalhes de contato de três Engenheiros de controle ao objeto Contato em seu banco de dados.
    // Add first contact and related details
    Contact contact1 = new Contact(
       Firstname='Quentin',
       Lastname='Foam',
       Phone='(415)555-1212',
       Department= 'Specialty Crisis Management',
       Title='Control Engineer - Specialty - Solar Arrays',
       Email='qfoam@trailhead.com');
    insert contact1;
    // Add second contact and related details
    Contact contact2 = new Contact(
       Firstname='Vega',
       Lastname='North',
       Phone='(416)556-1312',
       Department= 'Specialty Crisis Management',
       Title='Control Engineer - Specialty - Propulsion',
       Email='vnorth@trailhead.com');
    insert contact2;
    // Add third contact and related details
    Contact contact3 = new Contact(
       Firstname='Palma',
       Lastname='Sunrise',
       Phone='(554)623-1212',
       Department= 'Specialty Crisis Management',
       Title='Control Engineer - Specialty - Radiators',
       Email='psunrise@trailhead.com');
    insert contact3;
    Agora podemos usar o editor de consulta para escrever e executar uma consulta SOQL para encontrar esses Engenheiros de controle. Consultas SOQL pesquisam dados em objetos específicos. Você pode adicionar uma condição opcional na cláusula WHERE para restringir sua pesquisa.
  3. Insira a seguinte consulta na guia Query Editor (Editor de consulta).
    SELECT Name, Phone, Email, Title FROM Contact
                                     WHERE (Department = 'Specialty Crisis Management')
  4. Clique em Execute (Executar).

Os resultados exibem os detalhes dos contatos que trabalham no departamento de Gerenciamento de crises especializado.

Resultados da consulta SOQL

Você pode usar outra consulta SOQL para encontrar contatos em outros departamentos ou para ver se mais alguém criou registros para outros Engenheiros de controle. Para executar novamente uma consulta, clique em Refresh Grid (Atualizar grade) no painel Query Results (Resultados da consulta).

Uma consulta SOQL executada usando o código do Apex é chamada de consulta SOQL inline. Vamos ver como você pode usar o Developer Console para pesquisar contatos que trabalham no departamento especializado de gerenciamento de crises usando uma consulta SOQL inline.

Desta vez, vamos também tentar ordenar os resultados alfabeticamente, por nome.
  1. Selecione Debug (Depurar) | Open Execute Anonymous Window (Abrir janela Executar no modo anônimo).
  2. Insira o seguinte código.
    Contact[] theseContacts = [SELECT Name, Phone, Email, Description FROM Contact
                               WHERE (Department='Specialty Crisis Management')
                               ORDER BY Name];
    // Log a count of how many contacts were found
    System.debug(theseContacts.size() + ' contact(s) returned.');
    // Log all values in the array of contacts
    System.debug(theseContacts);
  3. Depois que o código tiver sido executado, abra o registro.
  4. Para visualizar apenas as mensagens USER_DEBUG, selecione Debug Only (Apenas depuração). Os resultados mostram o número de contas retornadas e os detalhes de contato em ordem alfabética.

Para saber mais sobre consultas SOQL, consulte o módulo Banco de dados e noções básicas do Apex.

SOSL (Salesforce Object Search Language – Linguagem de pesquisa do Salesforce Object) é uma linguagem que executa pesquisas de texto em registros. Diferentemente da SOQL, a SOSL pode pesquisar diversos tipos de objetos ao mesmo tempo. A SOSL também pode usar uma correspondência de palavras para comparar campos, enquanto a SOQL precisa da frase exata.

Quando você executa uma pesquisa SOSL para registros de contatos usando a palavra “Crise”, sua pesquisa procura em todos os campos dos contatos e retorna todos os registros contendo essa palavra. Mas se você tentar a mesma coisa em uma consulta SOQL, você precisa especificar os campos a serem pesquisados e uma palavra ou expressão completa a ser pesquisada. Você também pode usar LIKE ou curingas para restringir pesquisas SOQL ou SOSL.

  1. Na guia Editor de consulta, insira a consulta SOSL a seguir. Observe que somente parte do nome do departamento de Gerenciamento de crises especializado está incluído na consulta.
    FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
  2. Execute a consulta, depois observe os resultados no painel Resultados da pesquisa. Resultados da consulta SOSL
Da mesma forma como fez com as consultas SOQL, você pode executar pesquisas SOSL dentro do código do Apex.
  1. Selecione Debug (Depurar) | Open Execute Anonymous Window (Abrir janela Executar no modo anônimo).
  2. Execute o seguinte código.
    List<List<sObject>> searchList = [FIND 'Crisis' IN ALL FIELDS 
                                      RETURNING Contact(FirstName, LastName,
                                      Phone, Email, Description)];
    Contact[] searchContacts = (Contact[])searchList[0];
    System.debug('Found the following contacts:');
    for (Contact c : searchContacts) {
       System.debug(c.LastName + ', ' + c.FirstName);
    }
  3. Abra o registro e selecione a opção Debug Only (Apenas depuração).

O painel de registro Execution Log (Registro de execução) lista os nomes dos Engenheiros de controle.

Para saber mais sobre como funcionam as pesquisas SOSL, consulte o módulo Banco de dados e noções básicas do Apex.

Enquanto você estava brincando com SOQL e SOSL, os Engenheiros de controle cujos registros você estava procurando manobraram sua nave espacial para longe do caminho do asteroide. No final das contas, comandar uma nave espacial não é tão difícil assim: você só precisa ter um bom console e aprender a delegar!

Agora que evitou uma colisão com o asteroide 2014 QO441, você decide aterrizar na Estação espacial de Netuno para fazer uma pausa merecida. Conhecendo as diversas funções e recursos do Developer Console, você pode dirigir sua organização em muitas missões de sucesso.

Compartilhe seu feedback do Trailhead usando a Ajuda do Salesforce.

Queremos saber sobre sua experiência com o Trailhead. Agora você pode acessar o novo formulário de feedback, a qualquer momento, no site Ajuda do Salesforce.

Saiba mais Continue compartilhando feedback