この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

SOQL for ループ

クエリは特殊な for 構文に組み込むことができます。この構文は、ループ内でクエリから返される sObject を一度に 1 つずつ処理する場合や、リスト変数を使用してクエリ結果を保持し、200 個の sObject のバッチを一括処理する場合に使用できます。SOQL for ループでリスト変数を使用してクエリ結果を保持する方法は、ガバナ実行制限の 1 つであるヒープ制限を回避できるため、大量のレコードをクエリする場合に適しています。ガバナ制限についての詳細は、第 3 章のガバナ実行制限内での Apex の実行で学習します。

次に、SOQL for ループの例を示します。この例では、クエリから返される 1 個の sObjectに対して for ループの 1 回の反復処理が行われます。これは、for ループ内部でデータベース操作を行う場合は不十分です。sObject ごとに操作を 1 回実行するため、特定のガバナ制限に達する可能性が高くなるためです。
1for (Merchandise__c tmp : [SELECT Id FROM Merchandise__c]) {
2   // Perform some actions on the single merchandise record.
3}
より効率的な方法は、リスト変数を使用して、for ループの各反復で返されるレコードのバッチを保持する方法です。これにより、データベース操作の一括処理が可能になります。次の例では、for ループでリスト変数を使用しています。
1for (Merchandise__c[] tmp : [SELECT Id FROM Merchandise__c]) {
2   // Perform some actions on the single merchandise record.
3}