【发布时间】:2013-11-07 14:40:06
【问题描述】:
我有一个匿名 PL/SQL 块,其中包含我想通过 JDBC 运行的绑定变量。
PL/SQL 块示例:
variable v_value number
declare
v_return varchar2(30);
begin
:v_value:=300;
select ename into v_return from emp where empno=:v_value;
end;
相应的 Java 代码将使用带有 "?" 的转义语法来设置变量。所以这个块看起来像这样(如果我错了,请纠正我):
String block = "declare v_return varchar2(30);" +
"begin" +
"? := 300;" +
"select ename into v_return from emp where empno = ?;" +
"end;"
现在,假设我的变量是一个 INPUT 参数,我必须像这样设置参数:
// omitting the CallableStatement and conn declarations
cs = conn.prepareCall(block);
cs.setInt(parameterIndex, parameterValue);
问题是在我的块中我有两个 "?" 用于替换绑定参数:v_value。这意味着当使用转义语法时,只会设置第一个 "?"。第二个 "?" 将被“挂起”。
在这种情况下,当同一个绑定变量在一个 PL/SQL 块中多次使用时,我应该如何在 JDBC 转义语法中进行翻译?
编辑:
我在 SO 上找到了这个与我的问题有关的 question。我从中了解到的是,我必须 REWRITE 在同一块中使用多个绑定变量实例的所有匿名 PL/SQL 块。有什么解决方法吗?或者这就是它...游戏结束...这是 JDBC 的工作方式,我必须按时完成。
期待答案...搜索了 2 小时没有结果。
【问题讨论】:
-
您是否也转到了 Google 搜索结果的第二页?在你去那里之前,我不相信你真的绝望!