存儲過程
存儲過程(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)
剩下的內容我會在學習過程中補充的!