【发布时间】:2015-10-03 07:52:47
【问题描述】:
我正面临这个错误。
我有两个 Schema Schema A 和 Schema B
架构 B 包含一个表 my_table,其中正在插入值。
还有一个触发器my_trigger为schemaB中的my_table写的每一行
CREATE OR REPLACE TRIGGER schemaB.my_trigger
ON schemaA.my_table
FOR EACH ROW
BEGIN
IF INSERTING THEN
schemaA.my_package.my_procedure (:NEW.field_A,NEW.field_B, :NEW.field_C);
END IF;
EXCEPTION
WHEN OTHERS THEN
Insert into my_log(DBMS_UTILITY.format_error_stack,sysdate);
END my_trigger;
/ AFTER INSERT
这个写在 schemaB 的 my_table 上的触发器正在调用一个存在于 Schema A 中的过程。
但是,当触发触发器时,我的日志中出现以下错误
ERROR: ORA-04061: existing state of package "schemaA.my_package" has been invalidated
ORA-04065: not executed, altered or dropped package "schemaA.my_package"
ORA-06508: PL/SQL: could not find program unit being called: "schemaA.my_package"
ORA-06512: at "schemaB.my_trigger", line 17 10/1/2015 6:38:07 PM
schemaA 中的过程也被声明为 PRAGMA_AUTONOMOUS_TRANSACTION
这是一些授权问题,因为我检查了所有授权,我已经检查了触发器和过程的依赖关系 一切似乎都有效。你能帮忙吗?
我尝试在调用包中使用 Pragma serially_reusable 但仍然给我同样的错误
非常感谢
【问题讨论】:
-
尝试将调用包设置为 serially_reusable 但仍然是相同的错误..
-
请附上
schemaA.my_packageddl好吗?