SOQLで条件句を作成する際によくハマっていたことがあります。
以下のようなクエリを作成して何回システムに怒られたことか。。。
String str= 'テスト';
List<Account> accList= [SELECT Id, Name FROM Account WHERE Name = str];
これをApex内で書くと、コンパイルエラーとなってしまいます。
原因は「=」の後ろに「:」がないことです。
動的なSOQLでのバインド変数使用には「:」をつける必要があるんですね。
よって正しくは、
String str= 'テスト';
List<Account> accList= [SELECT Id, Name FROM Account WHERE Name =: str];
となります。
単純にクエリエディタでクエリを投げるだけだと「:」は必要ないので、Apex内でもそのまま書いてしまいがちで、毎回怒られてしまいます。。。
その都度「あ~、そうだったそうだった。」と修正するのですが、学び始めた当初は何が原因が全く分からず非常にイライラしていましたね。
システムに怒られる前に正しく書けるようになるぞー。
コメント