大体是这样,一个总控调用若干个存储过程,执行总控的时候其中一个存储过程(命名A)报 ORA-06508错误,经排除:只要是有另一个存储过程B 与A 一起调用时就报错。
1.总控里删除B的调用,正常执行
2.单独先执行完B,在执行A,也无异常
疑点:B执行时可能改变了A中的某些元素。但是B有100多行,A有1400行,光靠眼力检查不出来。
请教:如何检查运行时编译错误
1.总控里删除B的调用,正常执行
2.单独先执行完B,在执行A,也无异常
疑点:B执行时可能改变了A中的某些元素。但是B有100多行,A有1400行,光靠眼力检查不出来。
请教:如何检查运行时编译错误
冲突了 要么在啊A中加个execute immediate 'alter procedure b compile';
把这句放在总控调用B后面,执行总控,查看session此语句会卡住,改为编译A不会卡住,但是不解决问题
经简单测试发现 在一次完整执行过程中 执行过的存储过程可能都不能编译
懂得Oracle原理太少,只会一点一点的试
pro_droptable('fx_coll_acct_cls');
-----------------------
execute immediate '
create table fx_coll_acct_cls
as
select
acct_no
,limit_no
,ltrim(max(sys_connect_by_path(mt_coll_cls_typ_dscp,'';'')),'';'') as mt_coll_cls_typ_dscp
from tmpetl_coll_acct2
start with id1=1 connect by prior id2 = id2 -1
group by acct_no,limit_no order by acct_no,limit_no
';
发现A中用到了这个表,加以改造以后终于正常了