1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce】SOQLのバインド変数

Posted at

Apexで開発していると、データを検索するために SOQL(Salesforce Object Query Language) を使う場面はとても多いです。

その中でも、バインド変数 は、安全で柔軟なクエリを書くために重要です。

この記事では、SOQLのバインド変数について解説します。

そもそもバインド変数とは?

Apexの変数をSOQLクエリの中に安全に埋め込むための仕組みです。

例えば、次のように変数 lastName を使って Contact を検索したいとします。

String lastName = 'Iwasaki';
List<Contact> results = [SELECT Id, Name FROM Contact WHERE LastName = :lastName];

このように : を使ってApexの変数をSOQLに埋め込むことで、次のようなメリットがあります。

セキュリティ:SQLインジェクションを防止できる

可読性:文字列結合よりもシンプルで読みやすい

保守性:変数だけを差し替えればクエリの条件を動的に変更できる

また、複数の変数を使うことも可能です。

String lastName = 'Iwasaki';
String zip = '123-4567';
List<Contact> results = [
    SELECT Id, Name
    FROM Contact
    WHERE LastName = :lastName AND MailingPostalCode = :zip
];

ApexのロジックとSOQLを自然に連携させるために、バインド変数は非常に重要な機能です。

Salesforce公式ドキュメントでも、バインド変数の使用について次のように記載されています:

Use bind variables instead of dynamic SOQL to avoid injection vulnerabilities.
(SQLインジェクションの脆弱性を避けるために、動的SOQLではなくバインド変数を使用してください)

また、別の開発者ガイドには以下のような記載もあります:

You can also bind expressions, such as date literals, arithmetic expressions, or method return values.
(日付リテラル、算術式、メソッドの戻り値などの式もバインドできます)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?