MySQL的深入淺出(八)—— 存儲過程

存儲過程

存儲過程(Stored Procedure)是一種在數據庫中存儲複雜程序,以便外部程序調用的一種數據庫對象

存儲過程就是具有名字的一段代碼,用來完成一個特定的功能。
創建的存儲過程保存在數據庫的數據字典中

作用:大大提高效率(存儲過程本身執行速度非常快,調用存 儲過程大大減少數據庫交互次數);提高代碼重用性


存儲過程的參數

參數類型
IN 表示調用者向過程傳入值(傳入值可以是字面量或變量)
OUT 表示過程向調用者傳出值(可以返回多個值)(傳出值只能是變量)
INOUT 既表示調用者向過程傳入值,又表示過程向調用者傳出值(值只能是變量)

創建存儲過程

1.無參形式

mysql>delimiter $
mysql> create procedure pro_show()
    -> begin
    -> select * from customer;
    -> end$
mysql>delimiter ;  
mysql> call pro_show();#存儲過程的使用

2. 帶in參數

mysql> create procedure pro_askorder (in cuid int(11))
	-> begin
	-> select c_name from commodity where c_id in (select o_cid from `order` where o_cuid = cuid);
	-> end$

3.帶in和out參數

mysql>delimiter $
mysql> create procedure pro_cnum(in cid int(11),out cnum int(11))
	-> begin
	-> select c_num into cnum from commodity where c_id =cid;
	-> end$
mysql>delimiter ;  
mysql>set @cn=-1;#設置變量
mysql>call pro_cnum(12,@cn);
mysql>select @cn;
+------+
| @cn  |
+------+
|    6 |
+------+

4.帶inout參數

mysql>delimiter $
mysql> create procedure pro4(inout p_inout int)
    -> begin
    -> select p_inout;
    -> set p_inout =2;
    -> select p_inout;
    -> end$
mysql>delimiter ;  
mysql> call pro4(@en);#沒有初始化的變量默認爲null
+---------+
| p_inout |
+---------+
|    NULL |
+---------+
1 row in set (0.00 sec)

+---------+
| p_inout |
+---------+
|       2 |
+---------+
1 row in set (0.01 sec)

剩下的內容我會在學習過程中補充的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章