Может кто-нибудь помочь мне исправить триггер ниже? Мне задают эту проблему, но мои технические навыки ограничены.
Мой скрипт обнаружил ошибку ниже (ORA 4091):
ОБРАБОТКА СТАНДАРТНОГО ПО, Номер заказа: 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 * 1023 *
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;
/
Спасибо большое!
Кеннет.