从Java调用多个Oracle存储过程

从Java调用多个Oracle存储过程,java,oracle,stored-procedures,Java,Oracle,Stored Procedures,我的数据库示例中有多个存储过程:proc1、proc2、…proc10 我想在java的循环中调用它们。这样做的最佳方法是什么,以避免多次网络访问、重复编译和性能问题 这就是我现在拥有的: for (int i = 1; i <= 10; i++) { CallableStatement stmt = conn.prepareCall("call proc"+i); stmt.execute() } for(int i=1;i一种方法是编写另一个存储过程,通过proc10依次调

我的数据库示例中有多个存储过程:proc1、proc2、…proc10

我想在java的循环中调用它们。这样做的最佳方法是什么,以避免多次网络访问、重复编译和性能问题

这就是我现在拥有的:

for (int i = 1; i <= 10; i++) 
{
  CallableStatement stmt = conn.prepareCall("call proc"+i);
  stmt.execute()
}

for(int i=1;i一种方法是编写另一个存储过程,通过
proc10
依次调用
proc1
。调用“uber过程”应该是一次往返

参考:


我[…]不得不排除这个选项,因为我想从我的代码中更多地控制这些执行

如果您需要从代码中进行控制,那么除了您当前正在执行的操作外,几乎没有其他选择。代码中的控制意味着您的代码必须在对存储过程的每次调用之间执行。这反过来意味着(至少)每次调用之间的往返


(我想,你可以为你的每一个场景编写或者生成一个不同的优步程序。但这与我的建议基本相同。)

谢谢。我考虑过这个问题,但不得不排除这个选项,因为我想从我的代码中更多地控制这些执行。例如,我可能在执行5个过程后得到一个中断,可能需要切换上下文。当我在服务器端执行顶级过程时,我不能这样做。再次感谢。最后一个问题是,批处理是否会在服务器端执行无论如何,这对我试图实现的目标有帮助吗?我是否可以在两者之间停止控制?不,你不会。阅读javadoc for executeBatch。是什么让你寻找另一种解决方案而不是现有的解决方案?对于给定的约束,它看起来基本上是合理的。如果这些调用经常发生,你可能希望保留
CallableStatement
不过,它在一个数组中。