我經常看到用於在應用程序中編寫業務邏輯的存儲過程。有時這些特效將包含1000多行代碼。如果我在包含1000行的應用程序代碼中編寫方法/函數,將會受到批評。如果長時間存儲的過程被分解爲單獨的過程,就像類中的方法一樣?什麼不是做得更多,因爲它肯定會使代碼更加可用。存儲過程構造
Q
存儲過程構造
3
A
回答
1
首先,我同意納特的答案:對於T-SQL調試工具(如調試器)提供遠不及人們發現其他語言的功能。
其次,在存儲過程之間傳遞值時存在一些潛在的挑戰。傳遞簡單的數據類型非常簡單。傳遞涉及的數據類型變得更加複雜。使用臨時表,XML,分隔字符串,記錄集等需要額外的編碼,產生額外的開銷,並且具有性能影響。
我的「規則」是,如果輸入和輸出參數可以用標準方法(即標準數據類型)來處理,然後打破了存儲過程是必要的。如果傳遞輸入和輸出需要大量編碼工作,那麼存儲過程仍然很大。
3
喜歡你的地方,你需要開始考慮爲你的數據庫服務層的點這聽起來我。這將允許您將業務邏輯轉換爲適用於大量程序代碼的更合適的語言,同時仍然通過批准的API強制訪問數據庫。
1
我認爲「代碼行」是衡量代碼可重用性的一個不好的方法。我認爲你需要對這些「長期」程序進行更加定性的審視。過去我有幾個很長的程序,是否可以縮短任何代碼並且模塊化真的取決於 - 其他應用程序真正重用的任何邏輯,還是更多地是教科書的願望?我相信有很多的模塊赫然出現在是超過1000行的代碼,不需要被別人批評或分解成更小的部分企業應用...
這是否意味着你已經程序看到有1000多行代碼是合理的?當然不是。我只是想強調一些代碼行不是你應該看的唯一因素。
0
絕對的,長存儲特效應被分解成的被重複使用的和健壯的代碼短塊。不幸的是,數據庫開發中使用的語言和工具不支持以實際的方式做到這一點。
0
當你的SP這麼大,你可以definitelly說,這個過程「做了很多事情。」如果是這樣,你應該單獨做這些事情。 正如我在前面看到的,如果你需要支持這個功能,很容易重構這種SP一次,而不是使用1000行意大利麪條代碼。
相關問題
- 1. 存儲過程結構
- 2. 重構存儲過程
- 3. 鑄造COALESCE在存儲過程
- 4. 存儲過程鑄造錯誤
- 5. UniDac找不到存儲過程架構
- 6. SQL Server存儲過程 - 重構
- 7. 構建網格從存儲過程
- 8. 從存儲過程生成架構
- 9. 存儲過程語法結構
- 10. 過程結構的存儲器分配
- 11. Oracle存儲過程結構化參數
- 12. T-SQL存儲過程構建
- 13. 存儲過程
- 14. 存儲過程
- 15. 存儲過程
- 16. 存儲過程
- 17. 存儲過程
- 18. 存儲過程
- 19. 存儲過程
- 20. 存儲過程
- 21. 存儲過程
- 22. 存儲過程
- 23. 存儲過程
- 24. 存儲過程
- 25. 存儲過程
- 26. 存儲過程
- 27. 存儲過程
- 28. 存儲過程
- 29. 存儲過程
- 30. 存儲過程
因爲SQL是基於SET的,而不是程序性的。 1,000行是可疑的,但不是一個真正的指標,說明有什麼不對... –
這帶來了另一個問題。許多人主張存儲過程中的業務邏輯。在不判斷這種方法的情況下,業務邏輯通常是程序化的,那麼數據庫應該如何構建? – Craig
數據庫中有很多地方可以實現業務邏輯:表,它們的關係,觸發器和其他約束 –