举例:
一个存储过程A,在A里面并行执行A1,A2,A3,如:
create or replace procedure A is
begin
  A1;
  A2;
  A3;
end A;
现在这种写法只能串行的执行,效率低,有没有什么办法让这3个同时被调用?用job是可以实现的,除了用job外还有没有什么好方法?例如用java存储过程产生多线程也行,本人不会java,麻烦给一个示例代码,多谢!
分不够可以再加,只要能解决这个问题。

解决方案 »

  1.   

    如果你的系统资源够多
    并且是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;
      

  2.   

    dbms_pipe
    dbms_schedule
    好像是用来实现plsql多线程的,从10g开始支持。
    楼主可以尝试一下。
      

  3.   

    如果一定要通过JAVA来实现
    这个有一个在JAVA在写存储过程的例子
    http://blog.csdn.net/xwchen/archive/2007/06/15/1653918.aspx
    但是要在JAVA中实现多任务,还是了解一下JAVA吧,磨刀不误砍柴工的。
      

  4.   

    这么做,只会增加pl sql的复杂度,让你的设计更复杂,而且在项目的调试阶段,会增加大量的工作量,但是没看到有什么好处如果非要"并行"的话,我看不如自己创建一个程序包,利用程序包调用动态连接库中自己编写的API函数,在函数里创建一些进程并发处理,想怎么玩,就怎么玩吧
      

  5.   

    下面的只是实现表的并行查询,我要的是程序的并行执行,这样可以提高效率。我的DB是9I的,有没有其他好方法?谢谢!
      

  6.   

    java定义4个线程,每个线程里包括一个过程,让后将线程启动就ok了
      

  7.   

    请问如何定义线程? 就是不知道java,能否给个详细的例子?谢谢!