2016-11-04 22 views
2

我知道Oracle函數 - 返回的代碼行拋出錯誤

DBMS_UTILITY.FORMAT_ERROR_BACKTRACE 

將返回的行號,發生錯誤。

有沒有什麼辦法可以得到在Oracle 11g中出現錯誤的實際代碼語句?

+1

只能通過查看源代碼,例如'user_source'。公開源代碼將是一件很奇怪的事情。 –

+0

嘿..亞歷克斯。謝謝 !!! 我只是檢查..因爲我們沒有訪問代碼,導致它在不同的數據庫中,每次我們都依賴於其他團隊,導致多個包需要驗證,如果有這樣的選項可以得到引發錯誤的確切代碼片段,這會非常有幫助。但無論如何沒有什麼可以下來,因爲現在:) 再次感謝..你一如既往的幫助:) –

+1

@AlexPoole順便說一句,爲什麼不yopu發佈它作爲一個答案?提問者會將其標記爲已完成,並且將會清楚它已經被回答。 – Kacper

回答

4

沒有類似的機制來自動獲取源代碼。

原則上,您可以從user_sourceall_source數據字典視圖獲取該行的源代碼(也可能是周邊行)。

但是,您所描述的場景是,您無法訪問引發初始異常的數據庫源。當前捕獲並格式化異常的調用PL/SQL塊只能在數據庫鏈接用戶被授予查看該數據庫中代碼的權限時才能看到遠程源,並且您暗示它不會。您可以通過查詢[email protected]_link來驗證堆棧跟蹤中的所有者和程序包/過程。如果你還沒有達到目標,總是試着要求它 - 當然,來源可能不會公開。

如果您確實擁有該訪問權限,則可以通過該鏈接手動查看源代碼。你也可以在你的本地異常處理程序中查詢它,並且 - 作爲調試工具 - 用dbms_output進行輸出。這與查看本地代碼沒什麼兩樣,只是在查詢中有數據庫鏈接。但是,將該遠程代碼暴露給任何呼叫你本地程序的人可能並不明智。