SOQL SalesForce

Escritura de consultas SOQL

Para leer un registro de Salesforce, debe escribir una consulta. Salesforce proporciona un lenguaje de consulta de objetos (Salesforce Object Query Language o SOQL), el cual puede usar para leer los registros guardados. SOQL es similar al lenguaje SQL estándar, pero se ha personalizado para la plataforma Force.com.
Dado que Apex tiene acceso directo a los registros de Salesforce almacenados en la base de datos, puede insertar consultas SOQL en el código Apex y obtener resultados de forma sencilla. La inserción de SOQL en Apex se llama SOQL en línea.
Para incluir consultas SOQL en su código Apex, incluya la declaración SOQL entre corchetes y asigne el valor devuelto a un conjunto de sObjects. Por ejemplo, lo siguiente recupera todos los registros de cuenta con dos campos (Name y Phone) y devuelve un conjunto de sObjects de cuenta.
1Account[] accts = [SELECT Name,Phone FROM Account];

 

 

 

Sintaxis de SOQL básica

Esta es la sintaxis de una consulta de SOQL básica:
1SELECT fields FROM ObjectName [WHERE Condition]
La cláusula WHERE es opcional. Vamos a empezar con una consulta muy sencilla. Por ejemplo, la siguiente consulta recupera cuentas y obtiene dos campos para cada cuenta (ID y Phone).
1SELECT Name,Phone FROM Account
La consulta consta de dos partes:
  1. SELECT Name,Phone: en esta parte se incluyen los campos que desea recuperar. Los campos se especifican después de la palabra clave SELECT en una lista delimitada por comas. O bien, puede especificar un solo campo, en cuyo caso no es necesario el uso de comas (por ejemplo, SELECT Phone).
  2. FROM Account: en esta parte se especifica el objeto estándar o personalizado que desea recuperar. En este ejemplo, es Account. En el caso de un objeto personalizado llamado Invoice_Statement, es Invoice_Statement__c.

Más allá de lo básico

A diferencia de otros lenguajes SQL, no puede especificar * para todos los campos. Debe especificar cada campo que desee obtener de forma explícita. Si intenta acceder a un campo que no ha especificado en la cláusula SELECT, obtendrá un error debido a que el campo no se ha recuperado.
No necesita especificar el campo Id en la consulta, ya que siempre se devuelve en las consultas de Apex con independencia de que se haya especificado o no en la consulta. Por ejemplo: SELECT Id,Phone FROM Account y SELECT Phone FROM Account son declaraciones equivalentes. La única ocasión en la que puede que desee especificar el campo Id es cuando se trata del único campo que va a recuperar debido a que tiene una lista de un campo como mínimo: SELECT Id FROM Account. Además, puede que desee especificar el campo Id al ejecutar una consulta en el editor de consultas, ya que el campo Id no se mostrará a menos que se especifique.

 

Filtrado de resultados de consulta con condiciones

Si tiene varias cuentas en la organización, se devolverán todas. Si desea limitar las cuentas devueltas a las cuentas que cumplen una condición determinada, puede agregar esta condición en la cláusula WHERE. En el siguiente ejemplo se recuperan solo las cuentas cuyos nombres son SFDC Computing. Observe que no se aplica la distinción entre mayúsculas y minúsculas a las comparaciones de las cadenas.
1SELECT Name,Phone FROM Account WHERE Name='SFDC Computing'
La cláusula WHERE puede contener varias condiciones que se agrupan mediante operadores lógicos (AND, OR) y paréntesis. Por ejemplo, esta consulta devuelve todas las cuentas con el nombre SFDC Computing y más de 25 empleados:
1SELECT Name,Phone FROM Account WHERE (Name='SFDC Computing' AND NumberOfEmployees>25)
Este es otro ejemplo con una condición más compleja. Esta consulta devuelve todas las cuentas SFDC Computing o todas las cuentas con más de 25 empleados cuya ciudad de facturación es Los Angeles.
1SELECT Name,Phone FROM Account WHERE (Name='SFDC Computing' OR (NumberOfEmployees>25 AND BillingCity='Los Angeles'))

Más allá de lo básico

En lugar de usar el operador de igualdad (=) para la comparación, puede establecer coincidencias aproximadas mediante el operador LIKE. Por ejemplo, puede recuperar todas las cuentas cuyos nombres empiecen por SFDC mediante esta condición: WHERE Name LIKE 'SFDC%'. El carácter comodín % coincide con cualquier o ningún carácter. Por el contrario, el carácter _ se puede usar para establecer la coincidencia con tan solo un carácter.

 

Acceso a variables en consultas SOQL

Las declaraciones SOQL de Apex pueden hacer referencia a variables y expresiones de código Apex si van precedidas de dos puntos (:). El uso de una variable local en una declaración SOQL se llama enlace.
En este ejemplo se muestra cómo usar la variable targetDepartment en la cláusula WHERE.
1String targetDepartment = 'Wingo';
2Contact[] techContacts = [SELECT FirstName,LastName
3                          FROM Contact WHERE Department=:targetDepartment];


Comentarios

Entradas populares