我从 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)”,表示返回空。
我在做 concat 错误的方式吗?
更新
我刚刚找到了一种不必添加单引号的方法。即使对于具有查询的字符串,也只需要应用相同的冒号变量。
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 不能用单引号引起来。