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.
1 | Account[] accts = [ SELECT Name,Phone FROM Account]; |
Sintaxis de SOQL básica
Esta es la sintaxis de una consulta de SOQL básica:
1 | SELECT 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).
1 | SELECT Name,Phone FROM Account |
La consulta consta de dos partes:
- 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).
- 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.
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.
1 | SELECT 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:
1 | SELECT 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.
1 | SELECT Name,Phone FROM Account WHERE (Name= 'SFDC Computing' OR (NumberOfEmployees> 25 AND BillingCity= 'Los Angeles' )) |
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.
1 | String targetDepartment = 'Wingo' ; |
2 | Contact[] techContacts = [ SELECT FirstName,LastName |
3 | FROM Contact WHERE Department=:targetDepartment]; |
Comentarios
Publicar un comentario