我想做一些可以在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));
查询结果将在调试日志中。

10-06 00:13