【Apex】バッチ一括処理のstartメソッドでインラインSOQLを使用する。[ ]カッコで囲む書き方
Apexでバッチ処理(一括処理)を作ろうと思い公式のヘルプやTrailheadを見てみると、startメソッドでインラインSOQLを使用しているサンプルが見当たらない。どうやって書くのかな?インラインSOQLは使えないのかな?となったので、メモろうと思います。
バッチ処理(一括処理)でインラインSOQLは使えます。
インラインSOQLとは
そもそもインラインSOQLって何かというと
List<Account> accList = [SELECT Id, Name FROM Account]; |
この書き方です。SOQLを [ ] ←このカッコで囲むやつです。
SOQLの書き方としてはこの書き方もできますが
List<Account> accList = Database.query('SELECT Id, Name FROM Account'); |
インラインSOQLの最大のメリットは、コンパイル段階でSOQLの書き間違いに気付くこと!Apexはこの書き方ができて本当に便利です。出来る限りこれで書きたいですね。
一括処理でインラインSOQLの使い方
本題に戻って、一括処理のstartメソッドでインラインSOQLの使い方です。
まあ、使い方というほど大した話ではないのですが
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/** Apex一括処理 */ public class SampleBatch implements Database.Batchable<sObject> { // コンストラクタ public SampleBatch() { } // start public Database.QueryLocator start(Database.BatchableContext BC){ return Database.getQueryLocator([SELECT Id FROM Account]); } // execute public void execute(Database.BatchableContext BC, List<sObject> scope){ // 一括処理 } // finish public void finish(Database.BatchableContext BC){ } } |
Database.getQueryLocatorには文字列クエリだけではなく、インラインSOQLも食わせることが出来ます。
以上・・