2016-11-10 61 views
1

我有一個有1.3k行代碼的存儲過程。此存儲過程對同一包中的其他過程有幾個嵌套調用。PL/SQL複雜的存儲過程

該軟件包上的代碼總數大約爲13k。有大約25個輸入參數(無遊標)和3個輸出參數(包括1個遊標)。

此外,存儲過程使用少量全局臨時表和充滿動態查詢。

每次我嘗試調試存儲過程時,我都迷路了。這是我見過的最複雜的一段代碼,我試圖理解存儲過程的確切邏輯。理解這個存儲過程的最佳方法是什麼?

由於IP原因,我將無法在此處共享代碼。

+2

我認爲這適用於任何語言。你有一些結構不好的代碼,它是單一的,很難支持或維護。雖然PL/SQL Developer爲任意代碼塊提供了一些重構選項,包括'Extract procedure',但我沒有看到可以自動重構它的任何工具。 –

+1

打印代碼並將其貼到牆上。採用着色鉛筆,便利貼記錄並開始將代碼庫拆分爲您理解的部分。做筆記並使用顏色。在那裏,做了幾次。這個問題可能涉及太多的狀態變量在相同的範圍內。通常當你開始看到大局時,你也會開始理解混亂的細節。 – user272735

回答

2

如果這是你的工作,我會改變工作。 ;)

但是,對於這種問題,沒有一個好的和快速的方法。你可以做的唯一方法是重構代碼。按照命名約定將程序拆分爲更小的程序(我知道30個字符是很少的),這將使您更好地理解該代碼段的作用。
如果您有任何重複的代碼片段將其封裝在過程中。如果查詢很長,可以通過內部生成的函數動態構建查詢。單獨測試這些功能。

通常將代碼分成小塊並通過一些單元測試或其他方式測試每個塊。這意味着可能需要許多小時的工作。

1

試着理解這一過程的一部分。移動一塊新程序給它一個有意義的名字,然後在你的巨大程序中用新程序的調用來替換它。如果你有任何單元測試,運行它們以確保你沒有破壞任何東西。重複這個過程直到你的龐大程序(當時應該很小)很容易理解。

相關問題