2011-01-11 81 views
3

我從Oracle那裏得到一個堆棧跟蹤,說299行存在問題。沒問題,我查看了這個包中的那一行,並且說它是初始化塊中的一行,它將變量設置爲1,並且不會調用引發錯誤的過程。Oracle堆棧跟蹤行號與源代碼不匹配!

它看起來像服務器正在執行和當我查看包源時基於堆棧跟蹤中的行號所看到的不匹配。

我如何看待軟件包:我使用了PL/SQL Developer,並在對象瀏覽器中的軟件包名稱上單擊了「View Pacakge」。當我查看源代碼管理中的同一個包時,第299行的錯誤是有意義的(這是對失敗的過程的調用)。

所以我的問題是:跆拳道是怎麼回事?爲什麼當我向Oracle索要源代碼時,得到的源代碼似乎與堆棧跟蹤行號不匹配?

(oracle 10g)

+0

@Mike圖集:這是第一次發生在我身上和它使我(和我的同事開發者和DBA)質疑我的理智。我想,當解決方案最終被揭露時,可能會有很多面子。 – FrustratedWithFormsDesigner 2011-01-11 16:39:37

回答

1

所以,事實證明,我的劇本是引用API_USR.SOME_PACKAGE,我被登錄爲READONLY_USRREADONLY_USR擁有的SOME_PACKAGE舊版本。當我通過READONLY_USR查看API_USR.SOME_PACKAGE時,我得到了正確的源代碼。

面掌

+0

在簡單地使用Oracle SQL Developer時,我通常會得到錯誤的行號查詢(10-15行),至少你現在已經過去了你的問題。 – 2011-01-11 16:57:39

1

我想你已經得到了在PL/SQL開發者中打開的那個包的來源。當您再次選擇查看源代碼時,它會激活先前打開的編輯器,而不重新加載源代碼。

+0

嗯,我關閉了該軟件包的所有編輯器(只有一個,這是我第一次嘗試查看軟件包時打開的)。我在對象瀏覽中右鍵單擊包,然後選擇「刷新」。然後我右鍵單擊並選擇View。然後我再看到舊的代碼!我根本不會感到驚訝*如果它是一個PL/SQL Developer怪癖而不是Oracle,但我現在還不能確定...... – FrustratedWithFormsDesigner 2011-01-11 16:21:03