SQL存儲過程(以SQL server為例)


什么是存儲過程

對於有編程基礎的小伙伴,存儲過程應該是比較好理解的。

可以把它類比為“函數”,因為它本質上就是將一段SQL代碼封裝起來,用於完成特定的操作,在使用時只需通過儲存過程的名稱調用即可(如果存儲過程需要參數的話還需要傳遞對應的參數)

存儲過程在創建時即在數據庫服務器上進行了編譯並存儲在數據庫中,它里面的語句只進行一次編譯。(理論上來說存儲過程可以提高SQL語句的執行效率,不過在實際使用時我暫時沒有感知到明顯的速度提升)

 

存儲過程可以分為:系統存儲過程用戶存儲過程擴展存儲過程;本文主要介紹用戶存儲過程。

 

存儲過程的語法格式

SQL server為例,先給出最基本的,創建無參存儲過程的語法骨架:

這里需要提示一下:create procedure 只能是批處理的第一條語句,而且只能在一個批處理中創建並編譯。

 

無參無返回值存儲過程

1 Create procedure 存儲過程名稱
2 As
3 Begin
4 SQL語句
5 End
6 
7 /*        調用方法       */
8 Exec 存儲過程名稱

帶參數的存儲過程:

 

 1 Create procedure 存儲過程名稱
 2 
 3 (@variate01 int, @variate02 int)
 4 
 5 /*  SQL中的參數名必須以@開頭,后面跟上參數的類型
 6 
 7 這里可以簡單理解為在儲存過程中創建了臨時變量,離開存儲過程之后,這里創建的變量將被銷毀。      */
 8 
 9 As
10 
11 Begin
12 
13 SQL語句
14 
15 /*     在begin和end之間可以直接使用傳入的參數   */
16 
17 End
18 
19  
20 
21 /*        調用方法       */
22 
23 Exec 存儲過程名稱 參數(不同參數之間使用逗號隔開)

 

創建帶默認參數的存儲過程

 1 Create procedure 存儲過程名稱
 2 
 3 (@startId int = 默認值, @endId int = 默認值)
 4 
 5 Begin
 6 
 7 SQL語句
 8 
 9 End
10 
11  
12 
13  
14 
15 /*        調用方法      
16 
17 傳入參數,就使用傳入的參數;如果不傳入參數則使用默認參數 */
18 
19 Exec 存儲過程名稱

 

 

創建帶返回值的存儲過程

 

 1 Create procedure 存儲過程名稱
 2 
 3 (@variate01 int out,@variate02 int output)
 4 
 5 /* 需要返回的參數在定義時,后面加上out ; 需要輸入輸出的參數在定義時,后面加上output          */
 6 
 7 As
 8 
 9 Begin
10 
11 SQL語句
12 
13 End
14 
15  
16 
17 /*        調用方法       
18 
19 在使用前,先定義好變量用來承接存儲過程的返回值*/
20 
21 Declare  @variate01 int,
22           @variate02 int,
23 
24 exec 存儲過程名稱 @variate01 out, @variate02 output;
25 select @variate01, @variate02;

 

 

其他存儲過程的語法格式可以參考 W3Cschool的文章,我就不畫蛇添足了。

https://www.w3cschool.cn/sqlserver/sqlserver-hw2328n6.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM