java - 在包含插入和更新查询(语句)的 Java 批处理中调用 Oracle 过程

标签 java oracle stored-procedures jdbc callable-statement

我正在开发一个基于 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/

相关文章:

java - 如何将流转换为增强循环

oracle - 禁用 Oracle 中所有作业的脚本(DBMS_JOB 包)?

sql - 如何在sqlplus(Oracle)中完成一个CREATE TYPE的输入?

java - 为什么在java中比较两个整数MAX_VALUE会失败?

java - JavaFX CSS 中的 StyleableProperty

java - 如何从 j2me 应用程序调用 native 浏览器

sql - 在oracle中找到列中最长行的长度

ruby-on-rails - 从 Ruby on Rails 调用 PL/pgSQL 存储过程

sql - 如何从 SQL Server 数据库获取最近添加的存储过程列表

sql - 标签/关键字匹配的最佳解决方案是什么?