有没有办法在 Salesforce 的表中获取所有字段的列表?DESCRIBE myTable
不工作,SELECT * FROM myTable
也不工作。
问问题
19020 次
4 回答
14
在 Apex 中,您可以通过运行以下 Apex 代码片段来获取此信息。如果您的表/对象被命名MyObject__c
,那么这将为您提供一组您有权访问的对象上所有字段的 API 名称(这很重要 --- 即使作为系统管理员,如果您的表上的某些字段/对象通过现场级别安全对您不可见,它们不会显示在此处):
// Get a map of all fields available to you on the MyObject__c table/object
// keyed by the API name of each field
Map<String,Schema.SObjectField> myObjectFields
= MyObject__c.SObjectType.getDescribe().fields.getMap();
// Get a Set of the field names
Set<String> myObjectFieldAPINames = myObjectFields.keyset();
// Print out the names to the debug log
String allFields = 'ALL ACCESSIBLE FIELDS on MyObject__c:\n\n';
for (String s : myObjectFieldAPINames) {
allFields += s + '\n';
}
System.debug(allFields);
要完成此操作并实现SELECT * FROM MYTABLE
功能,您需要使用以下字段构建动态 SOQL 查询:
List<String> fieldsList = new List<String>(myObjectFieldAPINames);
String query = 'SELECT ';
// Add in all but the last field, comma-separated
for (Integer i = 0; i < fieldsList.size()-1; i++) {
query += fieldsList + ',';
}
// Add in the final field
query += fieldsList[fieldsList.size()-1];
// Complete the query
query += ' FROM MyCustomObject__c';
// Perform the query (perform the SELECT *)
List<SObject> results = Database.query(query);
于 2012-09-25T17:22:59.787 回答
3
describeSObject API 调用返回有关给定对象/表的所有元数据,包括其字段。它在 SOAP、REST 和 Apex API 中可用。
于 2012-09-25T16:37:10.140 回答
1
尝试使用Schema.FieldSet
Schema.DescribeSObjectResult d = Account.sObjectType.getDescribe();
Map<String, Schema.FieldSet> FsMap = d.fieldSets.getMap();
于 2012-09-25T16:37:30.060 回答
-7
你试过DESC myTable
吗?
对我来说它工作正常,它也在斜体的基本提示中。看:
于 2014-08-23T15:04:50.613 回答