存儲過程類似與我們編程時的函數,將常用的或很復雜的工作,預先用SQL語句寫好并用一個指定的名稱存儲起來, 那么以后要叫數據庫提供與已定義好的存儲過程的功能相同的服務時,只需調用execute,即可自動完成命令,跟函數調用差不多 !
優點
1.存儲過程只在創造時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
2.當對數據庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此復雜操作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。
3.存儲過程可以重復使用,可減少數據庫開發人員的工作量
4.安全性高,可設定只有某此用戶才具有對指定存儲過程的使用權
缺點
1、如果邏輯全部在存儲過程中實現,那么涉及廣泛業務邏輯和處理的應用程序可能會給服務器帶來過重負荷。這類處理包括數據傳輸、數據遍歷、數據轉換和大計算量操作。
應把這類處理移到業務過程或數據訪問邏輯組件中,與數據庫服務器相比,它們具有更好的可縮放性。
2、不要把所有業務邏輯都放在存儲過程中。如果必須在 T - SQL 中修改業務邏輯,應用程序的維護和靈活性將成為問題。例如,支持多個 RDBMS 的 ISV 應用程序不應當
分別為每個系統維護存儲過程。 通常,存儲過程的編寫與維護是一項專門技能,并非所有開發人員都能夠掌握。這會造成項目開發計劃的瓶頸。