Stored-Procedures
你如何重構一個醜陋的過程/查詢?
我繼承了一個數據庫,其中包含幾個 1000-1500 行長的過程,複雜的嵌套子選擇在某些地方深達 7 或 8 級。為了我自己的理智,我迫切需要重構它們,但是我怎樣才能開始這樣做呢?
如果這是 .Net,我會編寫單元測試 - 你推薦類似的方法嗎?
是的,創建單元測試。 這確實是確保修改後的版本滿足與原始版本相同的要求的唯一方法。
要重構過程,請尋找可以提取到單獨過程或嵌套過程中的任何重複程式碼模式。如果程序仍然太長,請將其分成單獨的程序,每個程序完成一項任務。當您中斷新程序時,您應該為其添加單元測試。
七或八級子選擇聽起來確實有些過分,但您可能會發現其中一些甚至大部分對於生成所需的數據是必要的。我最初會專注於該過程,然後處理 SQL。
要在 Oracle 中進行單元測試,最重要的商業測試產品是Quest 的 Code Tester。Oracle 在其免費的SQL Developer產品中內置了單元測試。StackOverflow 上的 PL/SQL 單元測試問題有一些其他選項,或者您可以編寫自己的測試。