我有一个APEX触发器,在插入后触发。假设它通过SOQL选择机会并将其分配给List集合。但是List和SOQL依赖于另一个变量Vehicle_Type__c。下面的代码不工作,我得到错误&;pullledopportunities &;变量不存在
if ( l.Vehicle_Type__c != 'Truck' ) {
List<Opportunity> PulledOpportunities = [SELECT Id, Name FROM Opportunity WHERE StageName =: 'Active' AND Med_Expiration__c >=: System.TODAY() AND Opp_Record_Type_ID__c =: 'ABC' AND WareHouse__c IN: WarehouseList];
} else {
List<Opportunity> PulledOpportunities = [SELECT Id, Name FROM Opportunity WHERE StageName =: 'Active' AND Opp_Record_Type_ID__c =: 'ABC' AND WareHouse__c IN: WarehouseList];
}
Integer FoundOpportunities = PulledOpportunities.size();
有什么建议吗?由于
在if
/else
结构之外声明变量PulledOpportunities
。您的变量的作用域是最近的封闭块(花括号),所以当if
结束时,它们将超出作用域。
List<Opportunity> PulledOpportunities;
if ( l.Vehicle_Type__c != 'Truck' ) {
PulledOpportunities = [SELECT Id, Name FROM Opportunity WHERE StageName = 'Active' AND Med_Expiration__c >=: System.TODAY() AND Opp_Record_Type_ID__c = 'ABC' AND WareHouse__c IN: WarehouseList];
} else {
PulledOpportunities = [SELECT Id, Name FROM Opportunity WHERE StageName = 'Active' AND Opp_Record_Type_ID__c = 'ABC' AND WareHouse__c IN: WarehouseList];
}
Integer FoundOpportunities = PulledOpportunities.size();
还请注意,您应该只在比较Apex变量时使用:
绑定操作符。像'Active'
这样的静态值不需要,也不应该使用绑定符号。