从Java调用多个Oracle存储过程

时间:2017-04-24 10:14:16

标签: java oracle stored-procedures

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

我想在java的循环中调用它们。为避免多次网络跳闸,重复编译,性能,最好的方法是什么?

这就是我现在所拥有的:

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

我不想执行一个调用这10个过程的顶级过程,因为我希望从我的代码中更多地控制这些执行。例如,我执行5个程序后可能会得到一个中断,可能需要进行上下文切换。当我在服务器端执行顶级程序时,我不能这样做

1 个答案:

答案 0 :(得分:2)

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

参考:

  

我[...]必须排除该选项,因为我希望从我的代码中更多地控制这些执行。

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

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