Skip to main content

Exécution des requêtes SOQL et SOSL

Objectifs de formation

Une fois cette unité terminée, vous pourrez :
  • Exécuter une requête SOQL à l’aide de l’éditeur de requête ou en écrivant du code Apex
  • Exécuter une recherche SOSL à l’aide de l’éditeur de requête ou dans le code Apex
Remarque

Remarque

Vous souhaitez apprendre en français ? Dans ce badge, les validations de défi pratique Trailhead se font en anglais. Les traductions sont fournies entre parenthèses à titre de référence. Dans votre Trailhead Playground, veillez (1) à définir les États-Unis comme région, (2) à sélectionner l’anglais comme langue, et (3) à copier et coller uniquement les valeurs en anglais. Suivez les instructions ici.

Consultez le badge Trailhead dans votre langue pour découvrir comment profiter de l’expérience Trailhead traduite.

Qu’est-ce qu’une requête SOQL ?

SOQL signifie Salesforce Object Query Language, autrement dit, Langage de requête d’objet Salesforce. Vous pouvez utiliser le langage SOQL pour lire des informations stockées dans la base de données de votre organisation. Sur le plan de la syntaxe, SOQL est très similaire au langage SQL (Structured Query Language, ou langage de requête structuré).

Vous pouvez écrire et exécuter une requête SOQL dans du code Apex ou dans l’éditeur de requête de la Developer Console.

Exécuter une requête SOQL

Avant de commencer à rédiger et exécuter des requêtes, il faut que votre organisation Salesforce contienne quelques données. Ajoutons les coordonnées de trois techniciens de navigation envoyés par votre base pour aider votre vaisseau à éviter l’astéroïde 2014 QO441.
  1. Sélectionnez Debug (Débogage) | Open Execute Anonymous Window (Ouvrir la fenêtre d’exécution anonyme).
  2. Copiez le code suivant, collez-le et exécutez-le. Ce code ajoute les coordonnées de trois techniciens de navigation à l’objet Contact de votre base de données.
    // 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;
    Nous pouvons maintenant utiliser l'éditeur de requête pour écrire et exécuter une requête SOQL afin de retrouver ces techniciens de navigation. Les requêtes SOQL recherchent des données dans des objets spécifiques. Vous avez la possibilité d'ajouter une condition dans la clause WHERE afin de réduire le champ de votre recherche.
  3. Saisissez la requête suivante dans l’onglet Query Editor (Éditeur de requête).
    SELECT Name, Phone, Email, Title FROM Contact
                                     WHERE (Department = 'Specialty Crisis Management')
  4. Cliquez sur Execute (Exécuter).

Les résultats présentent les informations des contacts qui travaillent dans le service Gestion des crises spéciales.

Résultats de requête SOQL

Vous pouvez utiliser une autre requête SOQL afin de retrouver les contacts d'autres services ou de savoir si quelqu’un d'autre a créé des enregistrements pour davantage de techniciens de navigation. Pour exécuter à nouveau une requête, cliquez sur Refresh Grid dans le panneau Résultats de requête.

Une requête SOQL exécutée à l’aide de code Apex est appelée requête SOQL en ligne. Voyons comment utiliser la Developer Console pour rechercher des contacts dans le service Gestion des crises spéciales à l'aide d'une requête SOQL en ligne.

Cette fois, nous allons essayer de trier les résultats par ordre alphabétique.
  1. Sélectionnez Debug (Débogage) | Open Execute Anonymous Window (Ouvrir la fenêtre d’exécution anonyme).
  2. Saisissez le code suivant.
    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. Une fois le code exécuté, ouvrez le journal.
  4. Pour afficher uniquement les messages USER_DEBUG, sélectionnez Debug Only (Débogage seulement). Les résultats indiquent le nombre de comptes renvoyés, ainsi que leurs coordonnées, dans l’ordre alphabétique.

Pour approfondir le sujet des requêtes SOQL, consultez le module Concepts Apex de base et base de données.

SOSL (Salesforce Object Search Language) est un langage qui effectue des recherches de texte dans des enregistrements. Contrairement à SOQL, SOSL peut exécuter des requêtes sur plusieurs types d’objets à la fois. SOSL peut également utiliser la reconnaissance de termes pour identifier des champs, tandis que SOQL requiert une expression exacte.

Quand vous exécutez une recherche SOSL pour retrouver des enregistrements en utilisant le terme « Crise », votre recherche examine tous les champs de contact et renvoie tous les enregistrements qui le contiennent. Mais si vous faites la même chose avec une requête SOQL, vous devez spécifier les champs à examiner ainsi qu’un terme précis ou une expression complète à rechercher. Vous pouvez également utiliser LIKE ou des caractères génériques pour affiner des recherches SOQL ou SOSL.

  1. Saisissez la requête SOQL suivante dans l’onglet Éditeur de requête. Notez que seule une partie du nom du service Gestion des crises spéciales est incluse dans la requête.
    FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
  2. Exécutez la requête puis observez les résultats dans le volet Résultats de recherche. Résultats de requête SOSL
Comme vous l'avez fait avec les requêtes SOQL, vous pouvez exécuter des recherches SOSL dans du code Apex.
  1. Sélectionnez Debug (Débogage) | Open Execute Anonymous Window (Ouvrir la fenêtre d’exécution anonyme).
  2. Exécutez le code suivant.
    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. Ouvrez le journal et sélectionnez l’option Debug Only (Débogage seulement).

Le panneau Journal d'exécution dresse la liste des noms des techniciens de navigation.

Pour en savoir plus sur le fonctionnement des recherches SOSL, consultez le module Concepts Apex de base et base de données.

Pendant que vous jouiez avec SOQL et SOSL, les techniciens de navigation dont vous consultiez les dossiers ont écarté votre vaisseau de la trajectoire de l’astéroïde. Finalement, commander un vaisseau n’est pas si difficile : il suffit d'avoir une bonne console et de savoir déléguer !

Maintenant que vous avez évité la collision avec l’astéroïde 2014 QO441, vous décidez de vous poser sur la base de Neptune pour prendre une pause bien méritée. Grâce à votre connaissance des différentes fonctions de la Developer Console, vous pouvez guider avec succès votre organisation dans de nombreuses missions !

Formez-vous gratuitement !
Créez un compte pour continuer.
Qu’est-ce que vous y gagnez ?
  • Obtenez des recommandations personnalisées pour vos objectifs de carrière
  • Mettez en pratique vos compétences grâce à des défis pratiques et à des questionnaires
  • Suivez et partagez vos progrès avec des employeurs
  • Découvrez des opportunités de mentorat et de carrière