我想做一些可以在SQL中完成的事情:
select * from table
如何使用SOQL做到这一点?我将无法使用Apex代码,因为我从PHP页面运行SOQL查询。
最佳答案
默认情况下,SOQL
不支持以这种方式选择所有字段:
SELECT *来自sObject
在下面检查是否有接受对象名称的通用类,并在该类的基础上给出SOQL
查询,以选择所有字段作为字符串。
Apex类别:
public inherited sharing class GenerateDynamicSOQLQuery {
public static string getSOQLQuery(String strObjectName) {
if(!String.isBlank(strObjectName)) {
String strQuery = 'SELECT ';
list<Schema.DescribeSObjectResult> objDiscribe = Schema.describeSObjects(new List<String>{strObjectName});
map<String, Schema.SObjectField> objFileds = objDiscribe[0].fields.getMap();
list<String> lstOfFieldNames = new list<String>(objFileds.keySet());
strQuery = strQuery + String.join(lstOfFieldNames, ', ') + ' FROM ' +strObjectName;
return strQuery;
}
else {
return null;
}
}
}
演示:要获取所生成查询的输出,请打开“执行匿名”窗口,然后执行以下代码:String strQuery = GenerateDynamicSOQLQuery.getSOQLQuery('Account');
//strQuery += ' WHERE Industry = \'Banking\' LIMIT 1';
strQuery += ' LIMIT 1';
System.debug('Account Records ====> '+Database.query(strQuery));
查询结果将在调试日志中。