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

标签 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 查询上执行相同的操作

最佳答案

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

关于java - Oracle SQL - 在通过 JDBC 调用的查询上重用绑定(bind)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22567188/

相关文章:

java - 需要从HTML页面解析图片src然后显示

java - 如何在java图形上使用 boolean 值使砖 block 消失?

SQL 服务器 : impact of column collation on T-SQL instructions

java - 有什么方法可以使用 REGEXP 将 sql 查询转换为 hql 查询

sql - 比较 2 个表以检查差异

java - Picasso 中的错误 get() 无法应用于 (android.content.Context)

java - 解释正则表达式

MySQL查询 - 获取未购买单个产品ID所有部分的客户

sql - 它说我没有选择行?

oracle - v5.0 到 20.2 - 列显示为 html 源