Oracle SQL - 在通过JDBC调用的查询上重用绑定变量

时间:2014-03-21 18:50:53

标签: java sql oracle jdbc oracle11g

如果我的查询类似于下面显示的查询

select first_name, author, location
from author_details
where first_name=?

?使用

在Java端填充值
statement = getConnection().prepareStatement(MY_QUERY);
            statement.setString(1, name);

我想更新查询以获取where子句中的附加检查:

select first_name, author, location
from author_details
where first_name=? or last_name=?

我想使用传入的相同值作为'名称'来自java代码。是否可以使用相同的传入值来检查first_name和last_name,还是必须在java代码上添加另一个statement.setString(2, name)条目?

我知道在SQLPlus中我可以声明一个变量并在以后使用它但我不确定如何在通过JDBC执行的sql查询上执行相同操作

1 个答案:

答案 0 :(得分:1)

JDBC(至少用于Oracle)为?查询中的所有PreparedStatement占位符创建不同的绑定变量名称。您不能有一个setString调用覆盖多个绑定变量。这意味着即使您传入相同的setString变量,也必须在第二个参数上添加对name的另一个调用。