簡體   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