我在数据库示例中有多个存储过程:proc1,proc2,... proc10。

我想从Java循环调用它们。避免多次网络旅行,重复编译和性能的最佳方法是什么?

这就是我现在所拥有的:

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


我不想执行一个调用这10个过程的顶级过程,因为我想从我的代码中更好地控制这些过程。例如,在执行5个过程后,我可能会中断,并且可能必须进行上下文切换。当我在服务器端执行顶层过程时,我无法执行此操作

最佳答案

一种方法是编写另一个存储过程,该存储过程按顺序调用proc1proc10。调用“超级程序”应该是一次往返。

参考:


Call a stored procedure with another in Oracle





  我不得不排除该选项,因为我想从我的代码中更好地控制这些执行。


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

(我想,您可以为每种情况编写或生成一个不同的超级程序。但这与我的建议基本相同。)

07-26 09:27
查看更多