我想做一些可以在SQL中完成的事情:
select * from table
如何使用SOQL实现这一点?我将无法使用Apex代码,因为我从PHP页面运行SOQL查询。
fykwrbwg1#
默认情况下,SOQL不支持以这种方式选择所有字段:
SOQL
SELECT * From sObject
检查下面接受对象名称的泛型类,并在此基础上给出一个SOQL查询,用于将所有字段选择为String。
顶点类:
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; } } }
**Demo:**要获取生成的查询的输出,请打开“Execute Anonymous”窗口,然后执行以下代码:
String strQuery = GenerateDynamicSOQLQuery.getSOQLQuery('Account'); //strQuery += ' WHERE Industry = \'Banking\' LIMIT 1'; strQuery += ' LIMIT 1'; System.debug('Account Records ====> '+Database.query(strQuery));
查询结果将在调试日志中。
fkvaft9z2#
您可以使用API提供的 meta数据来确定对象的哪些字段可供当前用户使用。有关Enterprise或Partner WSDL,请参阅PHP Toolkit 20.0 DescribeSObject Sample。您需要fields数组中的Name。将它们与逗号分隔符一起追加,以形成可访问字段的完整列表。
Name
sy5wg1nm3#
您可以使用FIELDS()作为完整的字段列表。例如:
SELECT FIELDS(ALL) FROM Account LIMIT 200 SELECT FIELDS(CUSTOM) FROM Account LIMIT 200 SELECT FIELDS(STANDARD) FROM Account
您还可以将FIELDS()与字段列表中的其他字段名称混合使用。例如:
SELECT Name, Id, FIELDS(CUSTOM) FROM Account LIMIT 200 SELECT someCustomField__c, FIELDS(STANDARD) FROM Account
注:最大限值为200 -参见文档here
vs3odd8k4#
此SOQL查询没有200的限制:
SELECT Label, QualifiedApiName FROM FieldDefinition WHERE EntityDefinition.QualifiedApiName = 'Account'
4条答案
按热度按时间fykwrbwg1#
默认情况下,
SOQL
不支持以这种方式选择所有字段:SELECT * From sObject
检查下面接受对象名称的泛型类,并在此基础上给出一个
SOQL
查询,用于将所有字段选择为String。顶点类:
**Demo:**要获取生成的查询的输出,请打开“Execute Anonymous”窗口,然后执行以下代码:
查询结果将在调试日志中。
fkvaft9z2#
您可以使用API提供的 meta数据来确定对象的哪些字段可供当前用户使用。
有关Enterprise或Partner WSDL,请参阅PHP Toolkit 20.0 DescribeSObject Sample。您需要fields数组中的
Name
。将它们与逗号分隔符一起追加,以形成可访问字段的完整列表。sy5wg1nm3#
您可以使用FIELDS()作为完整的字段列表。例如:
您还可以将FIELDS()与字段列表中的其他字段名称混合使用。例如:
注:最大限值为200 -参见文档here
vs3odd8k4#
此SOQL查询没有200的限制: