如果我有一个类似于下面所示的查询
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 查询上执行相同的操作
最佳答案
JDBC(至少对于 Oracle)为 PreparedStatement
查询中的所有 ?
占位符创建不同的绑定(bind)变量名称。您不能让一个 setString
调用覆盖多个绑定(bind)变量。这意味着您必须在第二个参数上添加对 setString
的另一个调用,即使您传入相同的 name
变量也是如此。
关于java - Oracle SQL - 在通过 JDBC 调用的查询上重用绑定(bind)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22567188/