我在数据库示例中有多个存储过程:proc1,proc2,... proc10。
我想从Java循环调用它们。避免多次网络旅行,重复编译和性能的最佳方法是什么?
这就是我现在所拥有的:
for (int i = 1; i <= 10; i++)
{
CallableStatement stmt = conn.prepareCall("call proc"+i);
stmt.execute()
}
我不想执行一个调用这10个过程的顶级过程,因为我想从我的代码中更好地控制这些过程。例如,在执行5个过程后,我可能会中断,并且可能必须进行上下文切换。当我在服务器端执行顶层过程时,我无法执行此操作
最佳答案
一种方法是编写另一个存储过程,该存储过程按顺序调用proc1
至proc10
。调用“超级程序”应该是一次往返。
参考:
Call a stored procedure with another in Oracle
我不得不排除该选项,因为我想从我的代码中更好地控制这些执行。
如果您需要从代码中进行控制,那么除了当前正在执行的操作之外,几乎没有其他选择。代码中的控件表示您的代码必须在对存储过程的每次调用之间执行。这又意味着(至少)每个呼叫之间的往返。
(我想,您可以为每种情况编写或生成一个不同的超级程序。但这与我的建议基本相同。)