我有一個oracle程序,它調用其他幾個程序。在Oracle過程中運行DDL - ORA-06508 - 如何在運行時重新編譯?
PROCEDURE1
過程2
PROCEDURE3
..
現在發生的事情是PROCEDURE2
是一些從屬表執行DDL(EXECUTE IMMEDIATE 'DDL PROCESS'
)在隨後的步驟3和以後使用。這運行良好,直到它遇到PROCEDURE3
它投擲ORA-06508 - Program/Unit being called not found
。
我們不能修改它不使用DDL,我們必須使用它們。我試過在DDL語句後重新編譯,但在PROCEDURE1
或PROCEDURE2
中都不起作用(ALTER PROCEDURE PROCEDURE3 RECOMPILE
)。
我懷疑PROCEDURE1
本身變得無效,編譯運行時會導致無限循環。我試過了,不起作用。
所以我需要使用一些技巧,使DDL在依賴對象上完成後,這些過程在運行時再次生效。
預先感謝誰參與回答。
你應該嘗試撥打匿名BLOKS的程序。 –
@ user1881540:您正在做什麼ddl更改,如創建表?並在程序3中使用該表。請發佈代碼。 –