MySQL-存儲過程--01-double_happy

存儲過程和函數:
	類似scala中的方法 

什麼是方法?
	1.就是完成特定功能的 一組 語句
	 
那你寫代碼寫方法的好處是什麼?
	1.提高代碼重用性
	2.簡化操作

存儲過程

就是 :
	1.一組預先編譯好的sql語句的集合
使用:
	1.提高效率:
		1.體現在 你寫好了存儲過程 a
			a:sql1、sql2、sql3  編譯好之後 
		 調用 a ,就可以直接使用了
		 如果再次使用 就不用編譯了  提高效率

注意:不寫存儲過程的話
	1. 三條 sql  你要連接 三次 數據庫
	2.寫存儲過程 裏面包含 3條sql  就連接1次數據庫


好處:
	1.減少編譯次數
	2.減少連接數據庫連接次數

語法

1.創建語法
理解:
	create procedure 存儲過程名字(參數列表){
	   方法體
	}


實際:
create procedure 存儲過程名字(參數列表)
Begin
	    存儲過程體(一組合法的SQL語句)
end

注意:
	1.參數列表: 三個部分
		1.參數模式 參數名 參數類型
		eg:
			IN  stuname varchar(20)


	1.參數模式 !!:
		1.IN               進   :該參數可以作爲輸入 
				1.需要調用方 傳入值
		2.OUt			 出   :該參數可以作爲輸出
				1.該參數 是作爲 返回值
		3.INOUT	     進出 :該參數 即可以作爲 輸入輸出
				1.即需要傳入值
				2.又可以返回值
2.存儲過程體 
	1.裏面有多條語句的時候
		1.每條sql 結尾要求加分號
	2.存儲過程的結尾使用 	delimiter (重新設置的意思)
		delimiter 結束標誌
			eg:
				delimiter  $

2.調用語法

call 存儲過程的名字(實參列表);

案例

1.空參列表
eg:插入到 admin表中5條記錄

--空參 插入到 admin表中3條記錄
delimiter $
create procedure myp1()
BEGIN
	insert  into admin (name,passwd) values('sx1','000'),('sx2','222'),('sx3','33');
END $

測試:
mysql> delimiter $
mysql> create procedure myp1()
    -> BEGIN
    -> insert  into admin (name,passwd) values('sx1','000'),('sx2','222'),('sx3','33');
    -> END $
Query OK, 0 rows affected (0.01 sec)

mysql> 

在這裏插入圖片描述

1.原本表 :兩條數據
調用:
 --調用
call myp1()$
創建:
mysql> delimiter $
mysql> create procedure myp1()
    -> BEGIN
    -> insert  into admin (name,passwd) values('sx1','000'),('sx2','222'),('sx3','33');
    -> END $
Query OK, 0 rows affected (0.01 sec)


調用:
mysql> call myp1()$
Query OK, 3 rows affected (0.00 sec)

mysql> 
查看結果:

mysql> select * from admin;
    -> $
+----+------+--------+
| id | name | passwd |
+----+------+--------+
|  3 | ww   | 11%^   |
|  4 | xx   | 33%^   |
|  5 | sx1  | 000    |
|  6 | sx2  | 222    |
|  7 | sx3  | 33     |
+----+------+--------+
5 rows in set (0.00 sec)

mysql> 

注意:
查詢的時候 也要加 $

2.創建 in 模式參數的存儲 過程

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