我有5个存储过程A B C D E
B C D E四个存储过程都要引用A存储过程执行后的结果。
因此,必须让A存储过程先执行完毕,才能启动B C D E存储过程。
A存储过程的执行时间是无法确定的,所以希望A执行完毕后,自动同时启动B C D E四个存储过程。
这个自动同时启动该怎么实现?oracle中有这个机制没有?

解决方案 »

  1.   

    在存储过程A的函数里直接调用 B C D E
      

  2.   

    谢谢楼上的回答,但是这样B C D E四个存储过程变成串行的了,效率很低,
    我希望同时启动这四个,让它们并行运行的。
      

  3.   

    Mark!~ 关注下!~Oracle JOB用法参考
    http://
    Oracle特殊包和"DBMS_Job"包的使用方法 
      

  4.   

    由于A的执行时间不确定,B、C、D、E要想同时启动,我能想到的办法就是A执行完成,写一个标志,然后另外写四个存储过程,判断标志是否为1(假定A执行完成并将标志置为1),若为1的话,则执行,否则不执行;然后将这4个存储过程做4个JOB,设置可能的执行间隔(每一个小时执行一次或者每十分钟执行一次)。
      

  5.   

    在A过程的最后执行BCDE,或者设法使A过程完成后激活某个触发器,触发器里执行bcde。---个人愚见
      

  6.   

    这个就是我现在用的办法,但是JOB希望在凌晨压力小的时候运行,这种方法JOB就会一直运行了(虽然后面的运行耗资源较小)。
      

  7.   

    为何要同时执行呢,这样会影响效率的!
    假如:执行A,将数据入库,BCDE任何一个执行都会锁定该表,从而影响其他SP对其操作的效率,假如是对表执行更新,则其他SP必须等待其完成才能操作该表。其实还是串行执行的。