I am facing an issue using Salesforce API. While querying I am getting the following exception: "The SOQL FIELDS function must have a LIMIT of at most 200". Now, I understand SF expects a max of 200 only. So, I wanted to ask how can I query when the results are more than 200?

I can only use REST API to query, but if there is another option, then please let me know and I will try to add it in my code.

Thanks in Advance

2 Answers

You could chunk it, SELECT FIELDS(ALL) FROM Account ORDER BY Id LIMIT 200. Read the id of last record and in next query add WHERE Id> '001...'. but that's not very effective.

Look into "describe" calls, waste 1 call to learn names of all fields you need and explicitly list them in the query instead of relying on FIELDS(ALL). You can compose SOQL up to 20k characters long and with "bulk API" queries you could fetch up to 10k records in each API call so "investing" 1 call for describes would quickly pay off.

You could even cache the describe's result in your application and fetch fresh only if something interesting changed, there's rest API header for that:

2

Try this it is Helpful:

// Get the Map of Schema of Account SObject Map<String, Schema.SObjectField> fieldMap = Account.sObjectType.getDescribe().fields.getMap(); // Get all of the fields on the object Set<String> setFieldNames = fieldMap.keySet(); list<String> lstFieldNames = new List<String>(setFieldNames); // Dynamic Query String. List<Account> lstAccounts = Database.query('SELECT ' + String.join(lstFieldNames, ',') + ' FROM Account'); system.debug('lstAccounts'+lstAccounts); 
2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.