我很困惑如何使用嵌套查询设置CallableStatement
变量。它是基于哪个是字符串中的第一个?或者首先在执行计划中?
final String sql =
"update employees\n" +
"set in_store = ?\n" + // Is this the first variable?
"where employee_id = (\n" +
" select es.employee_id\n" +
" from employee_store as es\n" +
" inner join stores as s on s.store_id = es.store_id\n" +
" where s.store_id = ?\n" + // Or is this the first variable?
");";
final CallableStatement stmt = conn.prepareCall(sql);
stmt.setBoolean(1, inStore);
stmt.setInt(2, storeId);
答案 0 :(得分:2)
PreparedStatement
的参数值由查询中的位置而不是执行计划替换。对于您的查询,in_store将是第一个参数,store_id将是第二个。
您还可以通过执行System.out.pringln(stmt)
来查看生成的查询。