MySQL基礎 - 儲存過程和儲存函式
阿新 • • 發佈:2022-01-10
區別: 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 函式名(傳參)