I have built dynamic query.but receiving below exception
01:16:56.0 (15683245)|USER_DEBUG|[335]|DEBUG|SetOfParentId--->{}
01:16:56.0 (15756602)|USER_DEBUG|[336]|DEBUG|Set1--->{}
01:16:56.0 (15788512)|USER_DEBUG|[337]|DEBUG|SetOfGSSDuplicateCase--->{}
01:16:56.0 (15816995)|USER_DEBUG|[338]|DEBUG|Set11--->{}
01:16:56.0 (15864603)|USER_DEBUG|[404]|DEBUG|soqlString---->select id,Vmstar_Id__c,GSS_Duplicate_Case__c,Duplicate_Of_Case__c,GSS_Build_Number__c,
GSS_Product_Version__c from Case Where
01:16:56.0 (16227040)|EXCEPTION_THROWN|[405]|System.QueryException:
unexpected token: '<EOF>'
01:16:56.0 (16357113)|FATAL_ERROR|System.QueryException:
unexpected token: '<EOF>'
**Dynamic query:**
string soqlString = 'select id,Vmstar_Id__c,GSS_Duplicate_Case__c,Duplicate_Of_Case__c,GSS_Build_Number__c,GSS_Product_Version__c from Case';
soqlString += ' Where ';
boolean whereClauseAdded = false;
if(SetOfParentId.size()>0){
whereClauseAdded = true;
soqlString += ' Vmstar_Id__c IN : SetOfParentId';
}
if(SetOfGSSDuplicateCase.size()>0){
if(whereClauseAdded)
soqlString += ' OR Vmstar_Id__c IN : SetOfGSSDuplicateCase';
else
soqlString += ' Vmstar_Id__c IN : SetOfGSSDuplicateCase';
whereClauseAdded = true;
}
if(Set1.size()>0 ){
if(whereClauseAdded)
soqlString += ' OR GSS_Build_Number__c IN : Set1';
else
soqlString += ' GSS_Build_Number__c IN : Set1';
whereClauseAdded = true;
}
if(Set11.size()>0){
if(whereClauseAdded)
soqlString += ' OR GSS_Product_Version__c IN : Set11';
else
soqlString += ' GSS_Product_Version__c IN : Set11';
whereClauseAdded = true;
}
system.debug('soqlString---->'+soqlString);
List<Case> requiredCases = Database.query(soqlString);
if(requiredCases.size()>0){
for(Case et : requiredCases){
if(et.id!=null){
MapOfParentId.put(et.Vmstar_Id__c,et.id);
}if(et.GSS_Duplicate_Case__c!=null){
MapOfGSSDuplicateCase.put(et.VMstar_Id__c,et.GSS_Duplicate_Case__c);
}if(et.Duplicate_Of_Case__c!=null){
MapOfDuplicateOfCase.put(et.VMstar_Id__c,et.Duplicate_Of_Case__c);
}if(et.GSS_Build_Number__c!=null){
Set3.add(et.GSS_Build_Number__c);
}if(et.GSS_Product_Version__c!=null){
Set33.add(et.GSS_Build_Number__c);
}
}
}
Best Answer
You need add 'WHERE' to your conditions. Because query is ending with
and nothing after it, the result is error.
is always added, even if nothing is after it.