You're mixing up your variables. When you use merge syntax in SOQL, you must use the name of an existing variable in your scope. So if you had a variable called stockId
, you could use: 'WHERE Id = :stockId'
. You can't do any cross-references, though, so stock.Id
cannot be merged in.
However, if you use 'WHERE Id = :'' + stockId
, you get a resulting query string of 'WHERE Id = :a0236000001bOXdAAM'
. Since you do not have a variable called a0236000001bOXdAAM
, you get an error.