Mysql的儲存過程

2021-09-29 21:19:29 字數 2138 閱讀 2879

儲存過程(stored procedure)是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,它儲存在資料庫中,一次編譯後永久有效,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件。

儲存過程與函式及其相似,實在不理解的話,就當成乙個特殊的函式(沒有返回值)就行了。

建立儲存過程

delimiter ;; 

create procedure 儲存過程名稱(in/out/inout 引數 引數型別, ... )

begin

-- 儲存過程語句

end;;

delimiter ;

in:輸入引數,呼叫儲存過程時的傳入值,傳入值為常量或者變數;

out:輸出引數,儲存過程的傳出值,可以返回多個值,傳出值為變數;

inout: 輸入/輸出引數,呼叫儲存過程的傳入值,儲存過程的傳出值,值只能是變數。

emmmm,不是特別好理解,舉個例子幫助理解下,如下所示:

delimiter ;;

create procedure pro_test(in x int, out y int ,inout z int)

begin

select x,y,z,@x,@y,@z; -- 檢視傳入xyz(區域性變數)以及@x@y@z(全域性變數)的值

update user set age = 18 where id =x;

-- 修改區域性變數xyz

set x = x + 1;

set y = y + 1;

set z = z + 1;

-- 修改全域性變數@x@y@z

set @x = 11;

set @y = 22;

set @z = 33;

select x,y,z,@x,@y,@z;-- 再次檢視變數

檢視儲存過程

show procedure status like 正則;  -- 可以不加like 正則

show procedure status like 正則\g

檢視儲存過程建立語句

show create procedure 儲存過程名稱;

show create procedure 儲存過程名稱\g

呼叫儲存過程

call 儲存過程名稱(引數);
1)、設定全域性變數的值;

2)、呼叫儲存過程;

3)、再次檢視全域性變數的值

結論:1)、呼叫儲存過程時,x和z能傳入,y不能傳入;

2)、區域性變數xyz的值與全域性變數@x@y@z的值修改互不干擾;

3)、儲存過程結束後,yz的值會分別返回給@y@z。

刪除儲存過程

drop procedure 儲存過程名稱;

如果有寫的不對的地方,請大家多多批評指正,非常感謝!

mysql儲存過程 MySQL儲存過程

在本節中,您將逐步學習如何在mysql中編寫和開發儲存過程。首先,我們向您介紹儲存過程的概念,並討論何時使用它。然後,展示如何使用過程 的基本元素,如建立儲存過程的語句,if else,case,loop,儲存過程的引數。下面每個教程都包含了易於理解的示例和詳細的說明。如果您瀏覽並學習所有教程,您可...

mysql 儲存過程 mysql 儲存過程

建立 為建立儲存過程的結束標誌,使用delimiter 可更改標誌 格式create procedure begin sqlend create procedure myprocedure in param integer begin select from tb role where tb rol...

mysql 儲存過程 MySQL儲存過程

目錄 儲存過程 簡介是一組為了完成特定功能的sql語句集合 比傳統sql速度更快 執行效率更高 儲存過程的優點 執行一次後,會將生成的二進位制 駐留緩衝區,提高執行效率 sql語句加上控制語句的集合,靈活性高 在伺服器端儲存,客戶端呼叫時,降低網路負載 可多次重複被呼叫,可隨時修改,不影響客戶端呼叫...