什麼是存儲過程?
存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後存儲在資料庫中。存儲過程可包含程式流、邏輯以及對資料庫的查詢。他們可以接受參數、輸出參數、傳回單個或者多個結果集以及傳回值。
為什麼要使用存儲過程?
▶存儲過程與其他應用程式共享應用程式邏輯,因而確定了資料通路和修改的一緻性。存儲過程可以封裝業務功能,在存儲過程中可以在同一位置改變封裝的業務規則和政策。所有的用戶端可以使用相同的存儲過程來確定資料通路和修改的一緻性。
▶存儲過程具有安全性和所有權連結,以及可以附加到它們的證書。使用者可以被授予權限來執行存儲過程而不必直接對存儲過程中引用的對象具有權限。
▶存儲過程提供了安全機制。即使是沒有通路存儲過程引用的表或者視圖的權限的使用者,也可以被授權執行該存儲過程。
▶存儲過程允許子產品化程式設計,存儲過程一旦建立,以後即可在程式中調用任意多次。這可以改進應用程式的可維護性,并允許應用程式統一通路資料庫。
▶存儲過程可以減少網絡通訊流量,使用者可以通過發送一個單獨的語句實作一個複雜的操作,而不需要在網絡上發送幾百個T-SQL代碼,這樣減少了再伺服器和客戶機之間傳遞的請求的數量。
存儲過程種類有哪些?
▷使用者自定義存儲過程
▷系統存儲過程
▷擴充存儲過程
存儲過程的建立:
CREATE PROC [EDURE] procedure_name [;number]
[{@parameter data_type}
[VARYING] [=default] [OUTPUT]] [,…n]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION}]
AS
Sql_statement[…n]
示例:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90TUPd3YUFGNWhlYxEjMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3AzN2IjNxgTM4AzMwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
存儲過程的修改:
方法一:将已有的查詢語句進行修改,将create改為alter
ALTER PROCEDURE procedure_name [;number]
[{@parameter data_type}
[VARYING] [=default] [OUTPUT]]
[,…n]
[WITH
{RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS
sql_statement[…n]