有没有办法获取Salesforce中表中所有字段的列表?DESCRIBE myTable不起作用,SELECT * FROM myTable也不起作用.
zac*_*ath 12
在Apex中,您可以通过运行以下Apex代码段来实现此目的.如果您的表/对象已命名MyObject__c,那么这将为您提供一组您可以访问的该对象上所有字段的API名称(这很重要 - 即使作为系统管理员,如果您的表上的某些字段/通过Field Level Security看不到对象,它们不会显示在这里):
// 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);
Run Code Online (Sandbox Code Playgroud)
要完成此任务并实现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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14118 次 |
| 最近记录: |