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);