* sObject:SOQL queries can return single or multiple records assObjectinstances. * List:SOQL queries often return results as aListofsObject. * Double:SOQL aggregate queries can return numeric data types likeDouble(e.g., COUNT, SUM). Reference:SOQL Query Return Types Incorrect Options: B (Long):SOQL does not directly returnLongvalues. D (Integer):Aggregate results useDouble, notInteger
最新のコメント (最新のコメントはトップにあります。)
正解は **C**、**D**、**E** です。
(※問題文の「O Long」「dg Integer」はそれぞれ「Long」「Integer」の誤植と考えられます)
### 領域の確認
* **領域:** **2. プロセスの自動化とロジック (Process Automation and Logic)**
* **トピック:** SOQLクエリ、戻り値のデータ型 (Return Types)
-----
### 正解の解説
Apexにおいて、SOQLクエリを実行した際に戻り値として受け取ることができるデータ型は、主に以下の3パターンです。
**E. List (List\<sObject\>)**
これが最も一般的な戻り値です。クエリが複数のレコードを返す可能性がある場合、結果はリスト形式になります。
```apex
// 例: List<Account> が返される
List<Account> accList = [SELECT Id, Name FROM Account];
```
**C. sObject (単一のレコード)**
クエリの結果が **「必ず1件」** であることがわかっている場合(`LIMIT 1` を使う場合など)、リストではなく単一の sObject 変数に直接代入することができます。
```apex
// 例: 単一の Account オブジェクトが返される
Account acc = [SELECT Id, Name FROM Account LIMIT 1];
```
※ただし、結果が0件だと `QueryException` が発生するため注意が必要です。
**D. Integer (整数)**
`COUNT()` 集計関数を使用した特別な構文の場合、戻り値はレコードではなく、件数を表す `Integer` になります。
```apex
// 例: Integer が返される
Integer count = [SELECT COUNT() FROM Account];
```
-----
### 不正解の解説
**A. Double**
これは **不正解** です。
例えば `AVG()` などの集計関数を使って平均値を計算する場合でも、SOQLクエリ自体の戻り値は `Double` 型のプリミティブではなく、**`AggregateResult` オブジェクト**(またはそのリスト)になります。そこから `.get('expr0')` などで値を取り出して初めて Double として扱えます。
```apex
// これはエラーになる
Double avgAmount = [SELECT AVG(Amount) FROM Opportunity];
// 正しくはこう
AggregateResult ar = [SELECT AVG(Amount) avg FROM Opportunity];
Double avgAmount = (Double)ar.get('avg');
```
**B. Long**
これは **不正解** です。
SOQLの戻り値として `Long` が直接返されるケースはありません。`COUNT()` は `Integer` を返します。
-----
### 💡 まとめ
Apexで `[SELECT ...]` と書いたときの戻り値は、以下の3つのど...
正:C,D,E