Transact-SQL語句是應用程序與SQL Server數據庫之間的主要編程接口,大量的時間將花費在Transact-SQL語句和應用程序代碼上。在很多情況下,許多代碼被重復使用多次,每次都輸入相同的代碼不但繁瑣,更由於在客戶機上的大量命令語句逐條向SQL Server發送將降低系統運行效率。因此,SQL Server提供了一種方法,它將一些固定的操作集中起來由SQL Server數據庫服務器來完成,應用程序只需調用它的名稱,將可實現某個特定的任務,這種方法就是存儲過程。
SQL Server中T-SQL語言為了實現特定任務而將一些需要多次調用的固定的操作編寫成子程序並集中以一個存儲單元的形式存儲在服務器上,由SQL Server數據庫服務器通過子程序名來調用它們,這些子程序就是存儲過程。
存儲過程是一種數據庫對象,存儲在數據庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變量、有條件執行,具有很強的編程功能。存儲過程可以使用EXECUTE語句來運行。
在SQL Server中使用存儲過程而不使用存儲在客戶端計算機本地的T-SQL程序有以下幾個方面的好處。
加快系統運行速度 存儲程序只在創建時進行編譯,以后每次執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高數據庫執行速度。
封裝復雜操作 當對數據庫進行復雜操作時(如對多個表進行更新,刪除時),可用存儲過程將此復雜操作封裝起來與數據庫提供的事務處理結合一起使用。
實現代碼重用 可以實現模塊化程序設計,存儲過程一旦創建,以后即可在程序中調用任意多次,這可以改進應用程序的可維護性,並允許應用程序統一訪問數據庫。
增強安全性 可設定特定用戶具有對指定存儲過程的執行權限而不具備直接對存儲過程中引用的對象具有權限。可以強制應用程序的安全性,參數化存儲過程有助於保護應用程序不受SQL注入式攻擊。
減少網絡流量 因為存儲過程存儲在服務器上,並在服務器上運行。一個需要數百行T-SQL代碼的操作可以通過一條執行過程代碼的語句來執行,而不需要在網絡中發送數百行代碼,這樣就可以減少網絡流量。
[原文地址]http://zhidao.baidu.com/link?url=QC5GyU5Ig0rgq4wRVVQWqgdILJrofz2WLF7DRwTARtXJCfjP5UFSsMWnNGLRrQlh3fm94uBMdbp4yT6EwIvVpa