MySQL資料庫之儲存過程
阿新 • • 發佈:2018-12-11
儲存過程(Stored Procedure):一組可程式設計的函式,是為了完成特定功能的SQL語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數(需要時)來呼叫執行。
為什麼要使用儲存過程??
①將重複性很高的一些操作,封裝到一個儲存過程中,簡化了對這些SQL的呼叫 ②批量處理:SQL+迴圈,減少流量,也就是“跑批” ③統一介面,確保資料的安全
相對於oracle資料庫來說,MySQL的儲存過程相對功能較弱,使用較少。
建立儲存過程:
delemiter // create procedure 儲存過程名([儲存過程引數列表]) begin set 引數名=引數; SQL語句 end //
為什麼使用delemiter??
mysql預設以分號作為sql語句的結束來進行執行,當我們在建立儲存過程時,為了不讓完整的儲存過程語句由於分號而提前執行,需要臨時規定以//或者$$來作為結束符號。這樣的話,建立儲存過程時,中間的分號會被忽略,直到遇到//符號才執行語句
儲存過程引數分類:儲存過程可以有0個或多個引數,用於儲存過程的定義。 3種引數型別:IN輸入引數:表示呼叫者向過程傳入值(傳入值可以是字面量或變數)
delimiter // create procedure 儲存過程(in 變數名 型別) begin set 變數名=值; SQL語句 end // call 儲存過程名(引數值)
OUT輸出引數:表示過程向呼叫者傳出值(可以返回多個值)(傳出值只能是變數)
delimiter //
create procedure 儲存過程(out 變數名 型別)
begin
set 變數名=值;
SQL語句
end //
call 儲存過程名(引數值)
ex:
create procedure out_param(out p_outint) begin select p_out; set p_out = 2; select p_out; end
set @p_out = 1; call
out_param(@p_out); select @p_out;
INOUT輸入輸出引數:既表示呼叫者向過程傳入值,又表示過程向呼叫者傳出值(值只能是變數)
create procedure out_param(inout p_out int)
begin
select p_out;
set p_out=2;
select p_out;
end
set @p_out=1;
call out_param(@p_out);
select @p_out;
呼叫儲存過程:
set @引數名
call 儲存過程名字([引數])