こんにちは、にいるです。
Savepoオリジナルの開発初心者向けプログラム「Sink it」です。
今回で第16回目、題材はクエリ言語の「SOQL For ループ」です。
この記事は「16.SOQL For ループを使ってみよう」の解説と解答です。
1.SOQL For ループとは
SOQL for ループを使用すると取得したすべてのレコードを反復処理することができます。
構文は2つあります。
・レコード単位で処理する方法
1 2 3 |
for (variable : [soql_query]) { code_block } |
・リストで一括処理する方法
1 2 3 |
for (variable_list : [SELECT Id,Name FROM Account LIMIT 5]) { code_block } |
よく使用する構文は前者ですね。
データの書き換えでUpdate(DML操作)で使用します。
2.解答・解説
解答です。
1 2 3 4 5 6 7 8 9 10 |
// ①SOQL for ループで5件の取引先を取得して各取引先の名前を表示してください。 for (Account a : [SELECT Id,Name FROM Account LIMIT 5]) { System.debug(a.name); } // ②SOQL for ループで5件の取引先責任者を取得して、その取引先責任者の取引先名を表示してください。 for (Contact c : [SELECT Id,Name,Account.Name FROM Contact LIMIT 5]) { System.debug(c.Account.name); System.debug(c.name); } |
■デバッグ
①SOQL for ループで5件の取引先を取得して各取引先の名前を表示してください。
取引先名が5件、表示されています。
②SOQL for ループで5件の取引先責任者を取得して、その取引先責任者の取引先名を表示してください。
データがちょっとあれですけど、各取引先責任者の取引先が取得できていますね。
SOQLの戻り値はListです。
流れとしては、Listから変数aにレコードを1つずつ代入しています。
そして、デバッグを実行して次のレコードをまたaに代入しています。
これをListの全レコードに対して実行するとfor文の処理を抜けます。
①に当てはめると、5件の取引先レコードを取得して1件目の名前を表示する→2件目・・・→5件目を表示する→for文の処理を抜ける。
と、いうことをやっています。
3.まとめ
いかがでしたでしょうか。
一度、処理の流れを掴めば忘れないと思うので、いろいろ書きながら試してみましょう。
DML操作と一緒に使うことが多いので、しっかりマスターしましょう!
皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!
コメント