Ejecutar consultas SOQL y SOSL
Objetivos de aprendizaje
- Ejecutar una consulta SOQL mediante Query Editor o en el código Apex.
- Ejecutar una búsqueda SOSL mediante Query Editor o en el código Apex.
¿Qué es una consulta SOQL?
SOQL es el lenguaje de consulta de objetos de Salesforce. Puede usar SOQL para leer la información almacenada en la base de datos de su organización. SOQL es similar desde el punto de vista sintáctico a SQL (lenguaje de consulta estructurada).
Puede escribir y ejecutar una consulta SOQL en el código Apex o en la ficha Query Editor de Developer Console.
Ejecutar una consulta SOQL
- Seleccione Debug (Depurar) | Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
- Copie, pegue y ejecute el siguiente código. Con este código se agregan los detalles de contacto de los tres ingenieros de control al objeto Contacto de la base de datos.
// 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;
Ahora, podemos usar Query Editor para escribir y ejecutar una consulta SOQL con el fin de buscar a estos ingenieros de control. Las consultas SOQL permiten buscar datos en objetos específicos. Puede agregar una condición opcional en la cláusula WHERE para limitar la búsqueda. - Introduzca la siguiente consulta en la ficha Query Editor.
SELECT Name, Phone, Email, Title FROM Contact WHERE (Department = 'Specialty Crisis Management')
- Haga clic en Execute (Ejecutar).
Los resultados muestran los detalles de los contactos que trabajan en el departamento especializado en el control de crisis.
Puede usar otra consulta SOQL para buscar contactos de otros departamentos o para ver si alguien más ha creado registros para otros ingenieros de control. Para volver a ejecutar una consulta, haga clic en Refresh Grid (Actualizar tabla) en el panel Query Results (Resultados de consulta).
Una consulta SOQL que se ejecuta mediante el código Apex se llama consulta SOQL en línea. Veamos cómo puede usar Developer Console para buscar contactos del departamento especializado en el control de crisis mediante una consulta SOQL en línea.
- Seleccione Debug (Depurar) | Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
- Introduzca el siguiente 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);
- Una vez ejecutado el código, abra el registro.
- Para ver solamente los mensajes USER_DEBUG, seleccione Debug Only (Solo depurar). Los resultados muestran el número de cuentas devueltas y los detalles de contacto por orden alfabético.
Para profundizar en las consultas SOQL, consulte el módulo Fundamentos y base de datos de Apex.
¿Qué es una búsqueda SOSL?
SOSL es el lenguaje de búsqueda de objetos de Salesforce, el cual permite realizar búsquedas de texto en los registros. A diferencia de SOQL, SOSL permite consultar múltiples tipos de objetos al mismo tiempo. Además, en el caso de SOSL, es posible usar una palabra coincidente para establecer la coincidencia con campos, mientras que SOQL requiere la frase exacta.
Cuando ejecuta una búsqueda SOSL de registros de contacto con la palabra “Crisis”, se busca en todos los campos de contacto y se devuelve cualquier registro que contenga esta palabra. Sin embargo, si intenta hacer lo mismo en una consulta SOQL, debe especificar los campos y la palabra o frase completas que se deben buscar. También tiene la posibilidad de usar LIKE
o comodines para limitar las búsquedas SOQL o SOSL.
Ejecutar una búsqueda SOSL
- En la ficha Query Editor, introduzca la siguiente consulta SOSL. Observe que en la consulta solo se incluye el nombre parcial del departamento especializado en el control de crisis.
FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
- Ejecute la consulta y observe los resultados en el panel Search Results (Resultados de búsqueda).
- Seleccione Debug (Depurar) | Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
- Ejecute el siguiente 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); }
- Abra el registro y seleccione la opción Debug Only (Solo depurar).
En Execution Log (Registro de ejecución) se incluyen los nombres de los ingenieros de control.
Para obtener más información sobre cómo funcionan las búsquedas SOSL, consulte el módulo Fundamentos y base de datos de Apex.
Mientras estaba realizando pruebas con SOQL y SOSL, los ingenieros de control cuyos registros ha buscado han logrado desviar la nave espacial de la trayectoria del asteroide. A fin de cuentas, puede que estar al mando de una nave espacial no sea tan difícil. ¡Solo necesita una buena consola y aprender a delegar!
Ahora que ha conseguido evitar la colisión con el asteroide 2014 QO441, decide aterrizar en la estación espacial de Neptuno para disfrutar de un merecido descanso. Con los conocimientos adquiridos sobre las distintas funciones y opciones de Developer Console, puede guiar su organización en muchas misiones con éxito.