繁体   English   中英

在包含插入和更新查询(声明)的Java批处理中调用Oracle过程

[英]Call a Oracle Procedure in a Java Batch containing Insert and Update Queries (Statement)

我正在一个基于Java的项目中,该项目以以下方式实现

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

现在,我需要为某些键添加一个Oracle过程调用,因此应将各个键添加到String Arraylist中。

我尝试将以下字符串添加到调用过程中,但是似乎没有人适合我。

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

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

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

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

还有其他方法可以执行,而无需更改执行批处理的类吗?

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

CALL INSERT_AUTONUMBER_DATA(......)

该字符串将使用以下逻辑添加到语句中,并且可以正常工作。

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

s.executeBatch();

因此,在这里我可以通过java.sql.Statement批量调用过程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM