【Salesforce】条件分岐で動的SOQLを作成してみよう!


動的SOQLとは?

動的 SOQL は、Apex コードを使用して、実行時に SOQL 文字列の作成を参照します。動的 SOQL によって、さらに柔軟なアプリケーションの作成が可能になります。たとえば、エンドユーザの入力に基づいた検索を作成したり、さまざまな項目名のレコードを更新したりできます。
動的 SOQL

テストデータ


「Warm」が3件、「Hot」が2件、「Cold」が2件で全部で7件存在する状態。

テストコード

test.cls
// パラメータから取得してきた値から条件分岐することを想定
String flag = '1';

String selectPart = 'SELECT Id, Name, Rating ';
String fromPart = 'FROM Account ';
String wherePart = 'WHERE ';

if(flag == '1'){
    wherePart += 'Rating = \'' + 'Hot' + '\'';
}else{
    wherePart += 'Rating = \'' + 'Cold' + '\'';
}

String soql = selectPart + fromPart + wherePart;
System.Debug('★★ 変数 soql : ' + soql);
List<Account> accList = Database.query(soql);

for(Account acc : accList){
    System.Debug('★★ 変数 acc : ' + acc);
}

実行結果

もし渡したフラグが「2」であった場合は以下のとおりです。