Я читал ветку с 2005 года, и люди говорили, что SOQL не поддерживает конкатенацию строк.
Хотя интересно, поддерживается ли он, и кто-то сделал это.
Я пытаюсь согласиться, но не повезло: (
Ниже приведен код APEX, пытающийся найти запись с указанным адресом электронной почты.
String myEmail = 'my@email.com';
String foo = 'SELECT emailTo__c, source__c FROM EmailLog__c
WHERE source__c = \'' +
myEmail + '\';
Database.query(foo)
Даже если запись действительно находится в базе данных, она ничего не запрашивает. Отладочные шоу
"row (0)", что означает пустое значение.
Я делаю конкат неправильно?
UPDATE
Я только что нашел способ не добавлять одинарные кавычки. Просто нужно применить ту же самую переменную двоеточия даже для строки, которая имеет запрос.
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);
Это тоже работает и необходимо, если предложение WHERE содержит DateTime, поскольку DateTime нельзя заключать в одинарные кавычки.