怎么在存储过程里并行调用其他的存储过程?
举例:
一个存储过程A,在A里面并行执行A1,A2,A3,如:
create or replace procedure A is
begin
A1;
A2;
A3;
end A;
现在这种写法只能串行的执行,效率低,有没有什么办法让这3个同时被调用?用job是可以实现的,除了用job外还有没有什么好方法?例如用java存储过程产生多线程也行,本人不会java,麻烦给一个示例代码,多谢!
分不够可以再加,只要能解决这个问题。
------解决方案--------------------如果你的系统资源够多
并且是OLAP类的系统,可以在对象或语句或会话级启用并行就行了
启用并行:
对象:
create table t(a varchar2(10)) parallel 4;
语句:
select /* + parallel (t, 4)*/ * from t ;
会话:
ALTER SESSION FORCE PARALLEL DDL PARALLEL 1;
ALTER SESSION FORCE PARALLEL DML PARALLEL 1;
------解决方案--------------------
dbms_pipe
dbms_schedule
好像是用来实现plsql多线程的,从10g开始支持。
楼主可以尝试一下。
------解决方案--------------------如果一定要通过JAVA来实现
这个有一个在JAVA在写存储过程的例子
http://blog.csdn.net/xwchen/archive/2007/06/15/1653918.aspx
但是要在JAVA中实现多任务,还是了解一下JAVA吧,磨刀不误砍柴工的。
------解决方案--------------------这么做,只会增加pl sql的复杂度,让你的设计更复杂,而且在项目的调试阶段,会增加大量的工作量,但是没看到有什么好处
如果非要"并行"的话,我看不如自己创建一个程序包,利用程序包调用动态连接库中自己编写的API函数,在函数里创建一些进程并发处理,想怎么玩,就怎么玩吧
------解决方案--------------------java定义4个线程,每个线程里包括一个过程,让后将线程启动就ok了
------解决方案--------------------程序员软件开发交流群:31626550
欢迎有喜爱软件开发的朋友加入,
畅谈国内外IT技术,
指点江山,激扬文字。