我正在开发一个基于 Java 的项目,该项目是通过以下方式实现的
- 有一些类(A,B,C,D....),它们采用 HashMap ,其键为整数,值为字符串数组列表。 arraylist 中的每个 String 元素都是一个 Oracle SQL 查询(INSERT 或 UPDATE)
- 类的这些方法(A,B,C,D....)循环遍历 map 。使用 JDBC 语句 (
**stmt.addBatch(String)**
) 将特定键的所有 SQL 查询添加到批处理中。对于每个唯一的 key ,都会创建并执行一个单独的批处理。 - 有许多类(X,Y,Z...)正在填充此映射和字符串数组列表以放置不同的 INSERT 和 UPDATE 查询
现在,我需要为某些键添加 Oracle 过程调用,因此应将其添加到相应键的字符串数组列表中。
我尝试添加以下字符串来调用过程,但似乎没有人适合我。
1. EXEC INSERT_AUTONUMBER_DATA(......)
2. BEGIN INSERT_AUTONUMBER_DATA(........) END;
我不想修改太多代码,因为它可能会影响其他区域。
我可以在批处理中添加可调用语句,但为此,我需要修改负责准备批处理的所有方法和类,这些方法和类在我的项目中大约有 15 个(项目设计不是很好),而且我必须编写一个标识过程调用的条件,以便我准备一个可调用语句而不是语句。
是否有其他方法可以在不更改执行批处理的类的情况下执行此操作?
最佳答案
我尝试了以下调用语句来添加到批处理中。
CALL INSERT_AUTONUMBER_DATA(......)
这个字符串被添加到具有以下逻辑的语句中并且它可以工作。
Statement s = conn.createStatement();
s.addBatch("CALL INSERT_AUTONUMBER_DATA(......)");
s.addBatch(.....);
.
.
.
s.executeBatch();
所以,在这里我可以通过 java.sql.Statement 批量调用过程
关于java - 在包含插入和更新查询(语句)的 Java 批处理中调用 Oracle 过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12973588/