【问题标题】:Oracle SQL - Reusing a bind variable on a query called through JDBCOracle SQL - 在通过 JDBC 调用的查询上重用绑定变量
【发布时间】:2014-04-29 07:37:47
【问题描述】:

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

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

【问题讨论】:

    标签: java sql oracle jdbc oracle11g


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-03
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 2021-10-27
      • 2023-03-13
      • 1970-01-01
      • 2013-01-21
      相关资源
      最近更新 更多