gpt4 book ai didi

java - JDBC CallableStatement - 一次性调用多个存储过程

转载 作者:行者123 更新时间:2023-11-29 08:24:27 24 4
gpt4 key购买 nike

要在 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(?) }");

当然这是无效的,但是如何修复它并一次性调用两个或多个过程?

最佳答案

您可以将它们包装在匿名 block 中:

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

Read more about the differences.

将函数的返回值分配给绑定(bind)变量(第一个 ?)现在是 a PL/SQL assignment ,在匿名 block 内,所以它使用 ? := ...。在您的原始代码中,您使用的是 call SQL statement version (? = call ...),并且 JDBC 使用普通的 = 来对绑定(bind)变量进行赋值。

大概my_procedure实际上是my_function,否则它不会有返回类型...

拥有一个进行这两个调用的包装程序(或函数),然后通过 JDBC 调用该单个包装程序可能会更易于维护。

关于java - JDBC CallableStatement - 一次性调用多个存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54426021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com