我有一个 oracle 程序,它调用了一些其他程序。
程序
1 程序 2
程序 3
..
现在发生的是在后续过程 3 及以后的过程中使用的一些从属表上PROCEDURE2
执行 DDL ( )。EXECUTE IMMEDIATE 'DDL PROCESS'
这运行良好,直到它击中PROCEDURE3
它抛出的地方ORA-06508 - Program / Unit being called not found
。
我们不能修改它以不使用 DDL,我们必须使用它们。我曾尝试在 DDL 语句之后重新编译,但它不起作用(ALTER PROCEDURE PROCEDURE3 RECOMPILE
)无论是 inPROCEDURE1
还是 in PROCEDURE2
.
我怀疑它PROCEDURE1
本身变得无效并且在运行时编译它会导致无限循环。我试过了,不行。
所以我需要使用一些技巧,在对依赖对象完成 DDL 之后,使这些过程在运行时再次有效。
提前感谢参与回答的人。