我有一个匿名 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 上发现了这个与我的问题有关的问题。我从中了解到的是,我必须重写所有在同一块中使用多个绑定变量实例的匿名 PL/SQL 块。有什么解决方法吗?或者这就是它...游戏结束...这是 JDBC 的工作方式,我将不得不做出应有的贡献。
期待答案...搜索了 2 个小时,没有结果。