有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在包含Insert和Update查询的Java批处理中调用Oracle过程(语句)

我正在从事一个基于Java的项目,项目的实现方式如下

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

现在,我需要为一些键添加一个Oracle过程调用,因此应该为相应的键添加到字符串Arraylist中

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

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

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

我不想修改大部分代码,因为它可能会影响其他方面

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

在不改变执行批处理的类的情况下,还有其他方法吗


共 (1) 个答案

  1. # 1 楼答案

    我尝试在批处理中添加以下call语句

    CALL INSERT_AUTONUMBER_DATA(......)
    

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

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

    因此,这里我可以通过java调用一个过程。sql。批处理语句