Frage

Ich habe von 2005 Thread gelesen und die Leute sagten SOQL unterstützt keine String-Verkettung.

Obwohl ich gefragt, ob es unterstützt wird, und jemand hat dies getan.

Ich versuche zu concat aber kein Glück: (

Im Folgenden wird APEX-Code versucht, Datensatz zu finden, mit angegebener E-Mail.

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

Database.query(foo)

Auch wenn der Datensatz ist in der Tat in der Datenbank, spielt es keine Abfrage nichts. Debug zeigt "Zeile (0)", die zurückgegeben leer bedeutet.

Am I concat falsch gemacht?

UPDATE

Ich fand nur ein Weg, nicht Apostroph hinzuzufügen hat. Nur erforderlich gleichen Doppelpunkt Variable auch für String anzuwenden, die Abfrage.

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);

Das funktioniert auch und ist notwendig, wenn WHERE-Klausel enthält Datetime da Datetime nicht mit einfachen Anführungszeichen umgeben werden kann.

War es hilfreich?

Lösung

Warum verwenden Sie Database.query ()? Stuff wird viel einfacher und schneller, wenn Sie normale Abfragen in Klammern verwenden werden

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

Nicht, dass der Parameter zu erwähnen statt String-Verkettung Bindung bedeutet keinen Grund zur Sorge über SQL-Injektionen etc .. Bitte beachten Sie auf diese Fragen in Klammern Gewöhnung, sie in beginnign seltsam aussehen, aber werden Ihr Hintern oft (falsch geschriebene Feldnamen speichern etc).

Wie für die tatsächliche Verkettung - es funktioniert wie Sie es beschrieben, ich bin nur nicht sicher über die Notwendigkeit Apostrophe zu entkommen. die Variablen Bindung sicherste Weg zu gehen.

http://www.salesforce.com/us/ Entwickler / docs / apexcode / Content / 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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top