是否有任何指導你什麼時候該寫和應該不會寫一個長而複雜的2000+行存儲過程?什麼時候寫一個長存儲過程
在我的具體情況下,這個存儲過程包含了很多if/then,case,goto和branching語句。它的工作原理是根據查詢的輸入和結果構建SQL查詢,並使用execute語句運行構造的查詢。它可以在一次調用中執行多個構造的查詢,並使用這些查詢的結果構建其他查詢以運行。
這很麻煩,很難理解。調試很困難,要知道發生了什麼,唯一的方法就是逐步調用,看看它在做什麼。幾乎沒有任何異常處理或記錄。保持它是一種痛苦。事實上,沒有人真正知道它的作用或創建方式,如果我們必須對其進行修改,我們將不得不採取「跨越你的手指並希望最好」的方法。但是,我認爲這是出於性能原因這樣做的。
此過程被許多應用程序使用。我能想到做這種事的唯一方式就是通過網絡服務。它的複雜性可能相當,但更容易理解。但是,它可能會慢多倍,因爲它仍然需要針對1個請求對數據庫進行多次調用。
所以,我的問題是,我們如何決定何時和何時不寫長存儲過程?
有沒有我丟失的東西,或者我們只是忍受我們可怕的存儲過程?
是否有方法將存儲過程組織和分解爲更小的組件,以便它們易於理解?
當您需要對數據庫進行多次調用時,存儲過程是否總是比其他任何事情都快並且是正確的選擇?
一個字:**從不!**你永遠不應該寫這樣的怪物....任何功能/程序的長度不應超過兩頁 - 對此問題採取非常自由的立場...... 150行 - MAX。 2000行代碼在一個單一的程序.... - 多麼維護的噩夢! – 2011-06-13 21:03:21
@dtc - 嘿,想知道你是如何解決這個巨大的問題。我感到你的痛苦。我有一個1550 LOC程序,我現在有一個處理,但在早期,它是一個學習/弄清楚的野獸。我在想自己如何能夠/應該分手。 – nanonerd 2015-07-29 19:34:13