Question

J'ai lu fil de 2005 et les gens ont dit SOQL ne concaténation prend pas en charge.

Bien que se demander si elle est soutenue et que quelqu'un l'a fait.

Je suis en train de concat, mais pas de chance: (

Ci-dessous est le code APEX tente de trouver record avec e-mail indiquée.

String myEmail = 'my@email.com';
String foo = 'SELECT emailTo__c, source__c FROM EmailLog__c 
              WHERE source__c = \'' +
              myEmail + '\';

Database.query(foo)

Même si le dossier est en effet dans la base de données, il ne demande rien. spectacles de débogage "Rangée (0)", qui signifie vide est renvoyé.

Suis-je faire de façon concat mal?

UPDATE

Je viens de trouver un moyen d'ajouter pas guillemets simples. Juste besoin d'appliquer une même variable du côlon même pour la chaîne qui a la requête.

String foo = DateTime.newInstance(......);

String bar = 'SELECT id FROM SomeObject__c WHERE createdOn__c = :foo';

List<SomeObject__c> result = Database.query(bar);

System.debug(result);

Cela fonctionne aussi, et est nécessaire si la clause WHERE contient DateTime depuis DateTime ne peut pas être entouré de guillemets simples.

Était-ce utile?

La solution

Pourquoi utilisez-vous Database.query ()? La substance sera beaucoup plus simple et plus rapide si vous utilisez des requêtes normales entre parenthèses

[SELECT emailTo__c, source__c FROM EmailLog__c WHERE source__c = :myEmail]

Sans oublier que la liaison de paramètre au lieu de concaténation de chaîne signifie pas besoin de vous soucier de SQL injections etc .. S'il vous plaît envisager de se habituer à ces questions entre parenthèses, ils ont l'air bizarre beginnign mais sauveront vos fesses plusieurs fois (noms de champs mal orthographié etc).

En ce qui concerne la concaténation réelle - il fonctionne comme vous l'avez décrit, je ne suis pas sûr de la nécessité d'échapper à apostrophes. La liaison des variables est le plus sûr chemin à parcourir.

http://www.salesforce.com/us/ développeur / docs / apexcode / contenu / apex_dynamic_soql.htm http://www.salesforce.com/us/developer/docs/api/index_Left.htm#CSHID=sforce_api_calls_soql.htm|StartTopic=Content%2Fsforce_api_calls_soql.htm|SkinName=webhelp

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top