有人可以帮我纠正下面的触发器吗?我被分配了这个问题,但我的技术能力有限。
我的脚本遇到以下错误(ORA 4091):
处理标准 PO 编号:27179
...................................................
更新采购订单状态..
完成审批处理。
dist id 611294gl 金额 10000.88 bill_del_amount 0 l_amount 10000.88
发生了一些异常 **ORA-04091: 表 PO.PO_DISTRIBUTIONS_ALL 正在变异,
触发器/函数可能看不到它**
ORA-06512: 在 "APPS.XXAET_PO_DELIVER_TO_TRG",
第 22 行
ORA-01403: 未找到数据
ORA-04088: 执行触发器期间出错
'APPS.XXAET_PO_DELIVER
PL/SQL 过程成功完成。
SQL>
我设法在客户端机器中找到了自定义触发器,但经过研究,我无法确定 sql 有什么问题。请帮忙!
CREATE OR REPLACE TRIGGER apps.xxaet_po_deliver_to_trg
BEFORE INSERT OR UPDATE ON po_distributions_all
FOR EACH ROW
DECLARE
l_emp_name VARCHAR2 (300);
l_sqlcode VARCHAR (30) := SQLCODE;
l_sqlerrm VARCHAR (400) := SUBSTR (SQLERRM, 1, 399);
x_profile_value VARCHAR (10) ;
BEGIN
x_profile_value := fnd_profile.value('ORG_ID');
Select Ship_To_Location_ID
INTO :NEW.Deliver_To_Location_Id
from PO_LINE_LOCATIONS_ALL
WHERE line_location_id = :NEW.line_location_id
AND ORG_ID = x_profile_value
;
EXCEPTION
WHEN OTHERS
THEN
NULL;
UPDATE PO_DISTRIBUTIONS_ALL SET Deliver_To_Location_Id = :NEW.Deliver_To_Location_Id
WHERE line_location_id = :NEW.line_location_id;
END;
/
太感谢了!肯尼斯。