1. 程式人生 > 其它 >MySQL基礎 - 儲存過程和儲存函式

MySQL基礎 - 儲存過程和儲存函式

區別: 1. 儲存過程一旦建立就想函式一樣可以呼叫,但是函式一定有返回值,儲存過程可以有可以沒有。

    2. 儲存過程和檢視有著相似的有點,安全,減少網路傳輸量,但是檢視只能查不能增/刪/改,儲存過程可以實現更復雜的資料處理,定義變數、遊標等。

儲存過程

概念:一組經過預編譯的SQL語句封裝。

執行過程:預儲存MySQL伺服器,需要執行的時候客戶端向服務端發出呼叫命令,服務端可以把預編譯並存儲好的一系列SQL語句全部執行。

優點: 1.具備重用性,減少程式設計師的開發壓力。

    2.減少網路傳輸量:客戶端不需要通過網路傳輸所有的SQL語句給伺服器

    3.封裝批量SQL的具體實現,提高查詢的安全性。

建立語法:

1 #引數型別:IN|OUT|INOUT ,不寫預設IN
2 #引數資料型別INT VARCHAR...
3 create procedure 儲存過程名(引數型別 引數名 引數資料型別)
4     # 區域性變數定義 declare a varchar(10) default ''; 
5 begin
6    #儲存過程體
7    #變數賦值SET a = 'abc'
8 end
補充內容:儲存過程中的變數為區域性變數,若在sql中定義全域性變數用@a='abc'
呼叫儲存過程:call 儲存過程名(實參1,實參2...)

儲存函式

函式作用:可以實現更負責的邏輯操作,提高使用者對資料庫的管理效率。

建立語法

1 create function 函式名(引數名 引數資料型別,...)
2 returns 返回值型別
3 begin
4     函式體 #必須包含return語句
5 end
語法上與儲存過程的差異
1. procedure -> function
2. 引數列表不需要定義引數IN|OUT|INOUT型別
3. 多了 returns 和 return
4. 呼叫語法:select 函式名(傳參)