执行SOQL操作的动态查询不起作用



我正在尝试使用几个参数进行动态soql查询,但无法正确执行

string knowledgeQuery = '';
string publishStatusOnline = 'Online';
// At the moment 'Knowledge__kav' only supports two languages 'is-is' and 'en-us'
if(language == 'is-is'){
language = 'is';
knowledgeQuery = 'SELECT Id, Customer_Facing_Instruction__c FROM Knowledge__kav WHERE UrlName = :name AND PublishStatus = :publishStatusOnline AND language = :language ORDER BY VersionNumber DESC LIMIT 1';
} else {
knowledgeQuery = 'SELECT Id, Customer_Facing_Instruction__c FROM Knowledge__kav WHERE UrlName = :name AND PublishStatus = :publishStatusOnline ORDER BY VersionNumber DESC LIMIT 1';
}
System.debug(knowledgeQuery);
Knowledge__kav article = Database.query(knowledgeQuery);

return article;

让知识查询字符串看起来像这样SELECT Id, Customer_Facing_Instruction__c FROM Knowledge__kav WHERE UrlName = :name AND PublishStatus = :publishStatusOnline ORDER BY VersionNumber DESC LIMIT 1

检查代码后,因为没有什么动态的,我想知道是否需要动态查询。我猜你也可以这样做:

Knowledge__kav article;
String publishStatusOnline = 'Online';
// At the moment 'Knowledge__kav' only supports two languages 'is-is' and 'en-us'
if(language == 'is-is'){
language = 'is';
article = [SELECT Id, Customer_Facing_Instruction__c FROM Knowledge__kav WHERE UrlName = :name AND PublishStatus = :publishStatusOnline AND language = :language ORDER BY VersionNumber DESC LIMIT 1];
} else {
article = [SELECT Id, Customer_Facing_Instruction__c FROM Knowledge__kav WHERE UrlName = :name AND PublishStatus = :publishStatusOnline ORDER BY VersionNumber DESC LIMIT 1];
}

return article;

最新更新