Apex - SOQL For Loop
Ce type de forLa boucle est utilisée lorsque nous ne voulons pas créer la liste et effectuer une itération directe sur l'ensemble des enregistrements renvoyés de la requête SOQL. Nous étudierons plus en détail la requête SOQL dans les chapitres suivants. Pour l'instant, rappelez-vous simplement qu'il renvoie la liste des enregistrements et du champ comme indiqué dans la requête.
Syntaxe
for (variable : [soql_query]) { code_block }
ou
for (variable_list : [soql_query]) { code_block }
Une chose à noter ici est que le variable_listou la variable doit toujours être du même type que les enregistrements renvoyés par la requête. Dans notre exemple, il est du même type que APEX_Invoice_c.
Représentation schématique
Exemple
Considérer ce qui suit for loop exemple utilisant SOQL for boucle.
// The same previous example using For SOQL Loop
List<apex_invoice__c> PaidInvoiceNumberList = new
List<apex_invoice__c>(); // initializing the custom object records list to store
// the Invoice Records
List<string> InvoiceNumberList = new List<string>();
// List to store the Invoice Number of Paid invoices
for (APEX_Invoice__c objInvoice: [SELECT Id,Name, APEX_Status__c FROM
APEX_Invoice__c WHERE CreatedDate = today]) {
// this loop will iterate and will process the each record returned by the Query
if (objInvoice.APEX_Status__c == 'Paid') {
// Condition to check the current record in context values
System.debug('Value of Current Record on which Loop is iterating is '+objInvoice);
//current record on which loop is iterating
InvoiceNumberList.add(objInvoice.Name);
// if Status value is paid then it will the invoice number into List of String
}
}
System.debug('Value of InvoiceNumberList with Invoice Name:'+InvoiceNumberList);