2009-09-29 47 views
2

我試圖編譯一個PL/SQL包,我得到了以下錯誤:麻煩編譯或刪除一個Oracle包

ORA-04043: object SYS_PLSQL_77721_489_1 does not exist 

在此之後,我再也無法重新編譯或丟棄包。

你有什麼建議嗎?

回答

2

如果您有權訪問支持,則看起來像bug#3744836。類似的錯誤被描述爲here,涉及流水線功能和同義詞。

6

嘗試這樣做:

DROP TYPE SYS_PLSQL_77721_489_1; 
DROP TYPE SYS_PLSQL_77721_DUMMY_1; 
DROP PACKAGE BODY xxxx; 
DROP PACKAGE xxx; 

我有完全相同的問題和作品。對不起@Vicent,但你提供的鏈接不能解決問題。

+0

我認爲這對我有用。我想知道爲什麼?第一個語句試圖刪除一個不存在的對象,因此失敗。那「DUMMY」類型究竟是什麼? – 2015-08-04 12:09:06

+0

這也適用於我們...不知道這裏真正發生了什麼,雖然...任何人都可以解釋問題的額外點! – JTech 2016-11-08 01:06:33

+0

我能夠使用第二行(名稱爲「DUMMY」) 即DROP TYPE SYS_PLSQL_77721_DUMMY_1; 謝謝你的回答 – 2017-02-16 10:29:57

0

這個問題的一個確認原因是PL/SQL類型使用流水線函數。這是一個錯誤,因此應該修復更新或完全修補的Oracle版本。解決方法是使用SQL類型(即create type whatever as object ...)。

如果這不適用於您的情況,請編輯您的問題以包含更多詳細信息。

+0

'FETCH cur INTO rec;'只適用於記錄而不適用於對象,有沒有辦法解決這個問題? – Blaf 2017-06-12 14:00:03

+0

@blaf - 這取決於你如何定義'cur'。這似乎是一個不同的問題。就這樣問,給我們足夠的細節來了解你的情況。 – APC 2017-06-12 14:03:03