MENU
Abo
某SIer勤務。
ITエンジニアです。
日々の学びをつらつらと書いています。
保有資格:
Salesforce認定アドミニストレーター  
Salesforce認定Platformデベロッパー
Salesforce認定上級Platformデベロッパー
カテゴリー
アーカイブ

【Apex】Database.getQueryLocator()でのインラインSOQLの使用

Apexバッチで使用するDatabase.getQueryLocator()。

特徴の1つとして、文字列でSOQLを作成し動的SOQLを実行できることが挙げられます。

ただ、Database.getQueryLocator()はインラインSOQLも使用できるとのことらしいので実際に試してみました。

インラインSOQLとは次のような[ ]で囲ったSOQLです。例) [SELECT Id, Name FROM Account];

目次

文字列を使用した場合

まず、そもそもDatabase.getQueryLocator()で文字列SOQLを実行する場合ですが、以下コードの7行目のように文字列でSOQLを作成し、10行目でDatabase.getQueryLocator()の引数に文字列を渡して実行します。

public class AccountBatch implements Database.Batchable <sobject>, Database.Stateful{
    
    public Database.QueryLocator start(Database.BatchableContext dbc){
        system.debug('startメソッド');
        
        //処理対象の取引先取得クエリ作成
        String query = 'Select Id, Industry From Account Where Name Like \'取引先%\'';
        
        //取引先を取得し、executeメソッドに渡す
        return Database.getQueryLocator(query);          
    }
    
    public void execute(Database.BatchableContext dbc, List<Account> accList){
        system.debug('executeメソッド'); 
    }
    
    public void finish(Database.BatchableContext dbc){
         system.debug('finishメソッド');   
    }
}

インラインSOQLを使用した場合

次にインラインSOQLを使用した場合ですが、以下コード7行目のようにDatabase.getQueryLocatorの引数に直接SOQLを書き込みます。

public class AccountBatch implements Database.Batchable <sobject>, Database.Stateful{
    
    public Database.QueryLocator start(Database.BatchableContext dbc){
        system.debug('startメソッド');
        
        //取引先を取得し、executeメソッドに渡す
        return Database.getQueryLocator([Select Id, Industry From Account Where Name Like '取引先%']);           
    }
    
    public void execute(Database.BatchableContext dbc, List<Account> accList){
        system.debug('executeメソッド'); 
    }
    
    public void finish(Database.BatchableContext dbc){
         system.debug('finishメソッド');   
    }
}

特に変数を利用して動的SOQLにする必要がない場合は、Database.getQueryLocator()ではインラインSOQLを使っていこうと思います。

終わりです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

某SIer勤務。
Salesforceエンジニアです。
日々の学びをつらつらと書いています。
Certified Administrator
Certified Platform DeveloperⅠ
Certified Platform DeveloperⅡ
Certified Sales Cloud Consultant

コメント

コメントする

CAPTCHA


目次