【发布时间】:2012-11-24 04:44:48
【问题描述】:
我有一个 oracle 程序,它调用了一些其他程序。
程序1
程序2
程序3
..
现在发生的事情是PROCEDURE2 正在对后续过程 3 及以后的过程中使用的一些依赖表执行 DDL (EXECUTE IMMEDIATE 'DDL PROCESS')。这运行良好,直到它到达 PROCEDURE3 并抛出 ORA-06508 - Program / Unit being called not found。
我们不能修改它不使用 DDL,我们必须使用它们。我曾尝试在 DDL 语句后重新编译,但它在 PROCEDURE1 或 PROCEDURE2 中都不起作用(ALTER PROCEDURE PROCEDURE3 RECOMPILE)。
我怀疑PROCEDURE1 本身会变得无效,并且在运行时编译它会导致无限循环。我试过了,不行。
所以我需要使用一些技巧,在对依赖对象执行 DDL 后,使这些过程在运行时再次有效。
提前感谢参与回答的人。
【问题讨论】:
-
你应该尝试从匿名块调用过程。
-
@user1881540:你在做什么 ddl 改变,比如创建一个表?并在程序 3 中使用该表。请发布代码。
标签: oracle plsql procedure ddl