ORACLE10G环境下我写了三个存储过程。
过程1 RCJS;--日常计算
过程2 YDJS;--月度计算
过程3 JDJS;--季度计算按我的设计要求,先对基础数据进行日常计算。然后在日常计算的结果基础上进行月度计算,最后在月度计算的结果上进行季度计算。
写完后,我先单独调用日常计算程序RCJS,执行正常。执行完毕后我再分别单独运行月度计算YDJS和季度计算程序JDJS.一切都正常。
由于日常计算时间较长,我不想等其运行后再手工运行另外两个程序。所以我运行如下代码:------------------------------------------------
declare 
  
  
begin
  --日常计算
  RCJS;
  --月度计算
  YDJS;
  --季度计算
  JDJS;
  
end;
----------------------------------------------------
结果我发现RCJS没有执行完时,系统就开始执行YDJS和JDJS。由于日常数据结果不完整,所以月度计算与季度计算结果不正确。
不知道是什么原因,难道这样写的程序会同步执行?请高人指点!感觉不尽!

解决方案 »

  1.   

    在存储过程里用DBMS_OUTPUT.put_line来输出过程的开始结束时间,来跟踪下
      

  2.   

    这是一个问题!可以在3个存储过程中的开始和结束都做一个输出,可以使DBMS_OUTPUT.PUT_LINE也可以使向一个表中插入数据,如果输出有交叉说明的确并行了,否则还是串行!
    另外,同时调用这3个存储过程似乎不太合理,日结是需要每天进行的,月结是每月进行的,季结是一个季度才进行一次的!所以,我建议分开,在不同的Job中执行。
      

  3.   

    你这样做肯定是顺序执行相应的存储过程啊!
    同时调用这3个存储过程似乎不太合理,日结是需要每天进行的,月结是每月进行的,季结是一个季度才进行一次的!所以,我建议分开,在不同的Job中执行。
    以上观点同2楼!