【Salesforce 認定Platformデベロッパー】試験対策:第136問

問題

次のApexステートメントがあります。

Account myAccount = [SELECT Id, Name FROM Account];

SOQLクエリによって複数のAccountが返された場合、何が発生しますか。

  • 変数myAccountは自動的にListデータ型にキャストされます。
  • 最初に返された Account が myAccount に代入されます。
  • クエリは失敗し、エラーがデバッグログに書き込まれます。
  • 未処理の例外がスローされ、コードが終了します。

正解

  • 変数myAccountは自動的にListデータ型にキャストされます。
  • 最初に返された Account が myAccount に代入されます。
  • クエリは失敗し、エラーがデバッグログに書き込まれます。
  • 未処理の例外がスローされ、コードが終了します。

解説

それぞれの選択肢の理由について説明します。

□ 変数myAccountは自動的にListデータ型にキャストされます。
これは不正解です。Apexでは自動的に変数のデータ型を変更することはできません。

□ 最初に返された Account が myAccount に代入されます。
これは不正解です。単一のsObject変数に複数のレコードを代入することはできません。

□ クエリは失敗し、エラーがデバッグログに書き込まれます。
これは不正解です。Apexでは、SOQLクエリが複数のレコードを返す場合、単一のsObject変数に代入しようとすると「List has more than 1 row for assignment to SObject」という未処理の例外がスローされます。この例外はコードの実行を中断させると同時に、デバッグログに例外情報として記録されます。

□ 未処理の例外がスローされ、コードが終了します。
これは正解です。SOQLクエリが複数のレコードを返す場合、単一のsObject変数に代入しようとすると、「List has more than 1 row for assignment to SObject」という未処理の例外がスローされ、コードの実行が中断されます。

次の問題へ

前の問題へ

1問目から復習する

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

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

目次