Domanda

Ho letto filo a partire dal 2005 e la gente ha detto SOQL non supporta la concatenazione di stringhe.

Anche se chiedo se è supportata e qualcuno ha fatto questo.

Sto cercando di concat ma senza fortuna: (

Di seguito è il codice APEX cercando di trovare record con e-mail specificato.

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

Database.query(foo)

Anche se il record è effettivamente nel database, non è così interrogazione nulla. spettacoli di debug "Riga (0)" che significa vuoto viene restituito.

sono io che faccio concat modo sbagliato?

Aggiorna

Ho appena trovato un modo non c'è bisogno di aggiungere sola offerta. Solo bisogno di applicare stessa variabile del colon anche per String che ha query.

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

Questo funziona troppo ed è necessario se clausola WHERE contiene DateTime DateTime poiché non può essere circondato da virgolette singole.

È stato utile?

Soluzione

Perché usate Database.query ()? La roba sarà molto più semplice e più veloce se userete query normali tra parentesi

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

Per non parlare che il legame invece di concatenazione di stringhe di parametri significa che non è necessario preoccuparsi di SQL iniezioni, ecc .. Si prega di prendere in considerazione ottenere utilizzato per queste query tra parentesi, si guardano strano in beginnign ma salverà il culo molte volte (nomi di campo compilato male ecc).

Per quanto riguarda la concatenazione attuale - funziona come hai descritto è, io sono solo incerto circa il bisogno di evadere apostrofi. Binding le variabili è modo più sicuro di andare.

http://www.salesforce.com/us/ developer / 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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top