簡體   English   中英

JDBC CallableStatement-一次調用多個存儲過程

[英]JDBC CallableStatement - call multiple stored procedures in one shot

要僅使用Java中的簡單JDBC來調用Oracle的存儲過程,我們可以執行以下操作:

con.prepareCall("{ call ? = my_procedure(?) }");
callStm.registerOutParameter(1, Types.INTEGER);
callStm.setInt(2, -100);
callStm.execute()

我想知道是否可以在一個prepareCall語句中調用一個以上的過程? 例如:

con.prepareCall("{ call prepare_proc(); ? = my_procedure(?) }");

當然這是無效的,但是如何解決它並一次調用兩個或更多個過程呢?

您可以將它們包裝在一個匿名塊中:

con.prepareCall("begin prepare_proc(); ? := my_procedure(?); end;");

閱讀有關差異的更多信息。

現在,將函數的返回值分配給綁定變量(第一個? )是在匿名塊內的PL / SQL分配 ,因此它使用? := ... ? := ... 在原始代碼中,您使用的是call SQL語句版本( ? = call ... ),而JDBC使用plain =分配綁定變量。

大概my_procedure實際上是my_function ,否則它將沒有返回類型...

有一個包裝程序(或函數)進行兩次調用,然后僅通過JDBC調用單個包裝器,可能會更易於維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM