Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Select All Fields of a Salesforce Object Using SOQL

I want to do something that could be done in SQL:

select * from table

How can this be achieved using SOQL?

I won't be able to use Apex Code, because I run SOQL queries from a PHP page.

like image 243
Usman Ali Avatar asked Nov 11 '22 06:11

Usman Ali


1 Answers

By default SOQL has no support for selecting all fields in this way:
SELECT * From sObject

Check below for a generic class that accepts the object name, and based on that gives a SOQL query for selecting all fields as a String.

Apex Class:

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: To obtain the output of the generated query, open an "Execute Anonymous" window and then execute below code:

String strQuery = GenerateDynamicSOQLQuery.getSOQLQuery('Account');
//strQuery += ' WHERE Industry = \'Banking\' LIMIT 1';
strQuery += ' LIMIT 1';
System.debug('Account Records ====>  '+Database.query(strQuery));

The query results will be in the debug logs.

like image 149
Ali Azam Avatar answered Dec 15 '22 19:12

Ali Azam