问题发生在 11.2.0.4.0 RAC环境
编译失效对象,后仍然还是失效状态
比较奇怪的是应用程序相同,单实例环境未出现,rac环境无法编译通过
alter procedure DUG_D处方成本更新 compile;
存储结构中只操作对应的表,未有其他引用对象
存储过程如下,
create or replace procedure DUG_D处方成本更新
(
Pb输出状态 Out Number,
Ps输出描述 Out Varchar2
)
IS
begin
for mz in
(
SELECT DISTINCT 单据序号I,B.付数 FROM DUG_D中药房住院处方明细 A INNER JOIN DUG_D中药房住院处方单 B
ON A.单据序号I=B.系统序号
where A.成本金额 is NULL
)
LOOP
UPDATE DUG_D中药房住院处方明细 A SET 成本金额=
(
SELECT ROUND(B.数量*B.成本单价*mz.付数,2) FROM DUG_D中药房住院处方明细 B WHERE A.系统序号=B.系统序号
AND B.单据序号I=mz.单据序号I
)
WHERE A.单据序号I=mz.单据序号i;
UPDATE DUG_D中药房住院处方单 SET 成本合计=
( SELECT ROUND(SUM(成本金额),2) FROM DUG_D中药房住院处方明细 where 单据序号I=mz.单据序号i
)
WHERE 系统序号=mz.单据序号i;
END LOOP;
Exception
When Others Then
am_error(sqlcode, sqlerrm);
ps输出描述 := Sqlcode || ':' || Sqlerrm||Pb输出状态;
end DUG_D处方成本更新;
10046trc如下