1

我正在开发一个基于 Java 的项目,其中的事情是通过以下方式实现的

  • 有一些类(A、B、C、D....)将 Hash Map 的键作为整数,将值作为字符串的数组列表。arraylist 中的每个 String 元素都是一个 Oracle SQL 查询(INSERT 或 UPDATE)
  • 这些类(A、B、C、D....)的方法在 Map 中循环。使用 JDBC 语句 ( ) 将特定键的所有 SQL 查询添加到批处理中**stmt.addBatch(String)**。对于每个唯一键,都会创建和执行一个单独的批处理。
  • 有许多类(X,Y,Z ...)正在填充此 Map 和字符串数组列表以放置不同的 INSERT 和 UPDATE 查询

现在,我需要为一些键添加一个 Oracle 过程调用,因此应该将它们添加到相应键的字符串数组列表中。

我尝试添加以下字符串来调用程序,但似乎没有人适合我。

1. EXEC INSERT_AUTONUMBER_DATA(......)

2. BEGIN INSERT_AUTONUMBER_DATA(........) END;

我不想修改很多代码,因为它可能会影响其他领域。

我可以在批处理中添加一个可调用语句,但是为此,我需要修改负责准备批处理的所有方法和类,这些方法和类在我的项目中大约 15 个(项目设计不是很好),另外我会必须编写一个标识过程调用的条件,以便我将准备一个可调用语句而不是语句。

有没有其他方法可以做到这一点,而不改变执行批次的类?

4

1 回答 1

1

我尝试将以下调用语句添加到批处理中。

CALL INSERT_AUTONUMBER_DATA(......)

该字符串被添加到具有以下逻辑的语句中,并且可以正常工作。

Statement s = conn.createStatement();
s.addBatch("CALL INSERT_AUTONUMBER_DATA(......)");
s.addBatch(.....);
.
.
.

s.executeBatch();

所以,在这里我可以通过 java.sql.Statement 批量调用一个过程

于 2012-10-19T12:09:15.077 回答