No, because start() method must return either Database.QueryLocator or Iterable<sObject>. If we do not write anything in start(), it will give error as "Missing return statement required return type: System.Iterable<SObject>"
Moreover, execute() method accepts 2 arguments (Database.BatchableContext and List<sObject>). List<sObject> is received from start(), hence, we must atleast write a return statement inside start().
More reference - https://trailhead.salesforce.com/content/learn/modules/asynchronous_apex/async_apex_batch
Batch class must implement Database.Batchable interface, which contains start() that must return either Database.QueryLocator object (result of query) or an Iterable that contains the records.
Since we don't want to query anything in start method, return type cannot be Database.QueryLocator, it must be Iterable<sObject>
We can create a list of any object inside start() method and return that list to execute() for actual processing. Hence, the answer to this question would be, Yes, we can write batch class without querying anything in start() method, provided we are returning a list of records.
Some limitations not to query inside start() would be, the records to be processed have to be created ourselves instead of using existing records from the database. The usability of such a batch class would be greatly limited.
No, because start() method must return either Database.QueryLocator or Iterable<sObject>. If we do not write anything in start(), it will give error as "Missing return statement required return type: System.Iterable<SObject>"
Moreover, execute() method accepts 2 arguments (Database.BatchableContext and List<sObject>). List<sObject> is received from start(), hence, we must atleast write a return statement inside start().
More reference - https://trailhead.salesforce.com/content/learn/modules/asynchronous_apex/async_apex_batch
If we do not write anything in start(), it will give error as "Missing return statement required return type: System.Iterable<SObject>"
Moreover, execute() method accepts 2 arguments (Database.BatchableContext and List<sObject>).
List<sObject> is received from start(), hence, we must atleast write a return statement inside start().
More reference - https://trailhead.salesforce.com/content/learn/modules/asynchronous_apex/async_apex_batch
All Answers
If we do not write anything in start(), it will give error as "Missing return statement required return type: System.Iterable<SObject>"
Moreover, execute() method accepts 2 arguments (Database.BatchableContext and List<sObject>).
List<sObject> is received from start(), hence, we must atleast write a return statement inside start().
More reference - https://trailhead.salesforce.com/content/learn/modules/asynchronous_apex/async_apex_batch