Exécution des requêtes SOQL et SOSL
Objectifs de formation
- 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
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
- Sélectionnez Debug (Débogage) | Open Execute Anonymous Window (Ouvrir la fenêtre d’exécution anonyme).
- 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. - 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')
- Cliquez sur Execute (Exécuter).
Les résultats présentent les informations des contacts qui travaillent dans le service Gestion des crises spéciales.
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.
- Sélectionnez Debug (Débogage) | Open Execute Anonymous Window (Ouvrir la fenêtre d’exécution anonyme).
- 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);
- Une fois le code exécuté, ouvrez le journal.
- 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.
Qu’est-ce qu’une recherche SOSL ?
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.
Exécution d'une recherche SOSL
- 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)
- Exécutez la requête puis observez les résultats dans le volet Résultats de recherche.
- Sélectionnez Debug (Débogage) | Open Execute Anonymous Window (Ouvrir la fenêtre d’exécution anonyme).
- 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); }
- 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 !