MYSQL存儲過程入門1、語法以及in,out區別

1.什麼是存儲過程?
其實存儲過程就是預編譯了的SQL語句。
2.優點:
(1)提速: 只需要經過一次預編譯,以後就可以直接調用該存儲過程。如若有數百次的SQL語句執行,存儲過程更快速,因爲其經過了預編譯。
(2)省流量:如有數百條SQL語句需要執行,就要發送數百條SQL語句的流量,而存儲過程一條即可。
(3)安全:沒有權限的用戶可以有控制的情況下間接地執行存儲過程。並且存儲過程是一個結果,其中有多個相關的動作,一旦執行,多個動作是關聯執行的,保存了數據在安全性和完整性。
(4)靈活:存儲過程能像程序一樣,實現多種功能。
缺點:
(1)類似面向過程,編程當邏輯複雜時,實現起來是挺麻煩的。
(2)調試麻煩,好像沒什麼比較好的工具,經常要打印來調。
(3)間接加重了數據庫的負擔,緩存併發嚴較多的時候比較明顯。

MYSQL存儲過程中的關鍵語法:
DELIMITER // 聲明語句結束符,用於區分;
CREATE PROCEDURE exercise(IN j_in int) 聲明存儲過程
BEGIN …. END 存儲過程開始和結束符號
SET @j_in=1 變量賦值
DECLARE l_int int unsigned default 4000000; 變量定義

DELIMITER // :相當於告訴MYSQL這是一個存儲過程,等會有;的時候不要停止或者執行,直到出現DELIMITER;才表示該條存儲過程結束,例子如下:
mysql> delimiter //
mysql> CREATE PROCEDURE exercise1(in j_in int)
-> begin
-> select j_in; –顯示當前j_in的值
-> set j_in = 2; –把當前j_in的值設置爲2
-> select j_in; –顯示當前j_in的值
-> end;
-> // –結束
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ; –結束當前存儲過程
mysql> call exercise1(@j_in); –執行該存儲過程
+——+
| j_in |
+——+
| 4 | –先前設置爲4,未貼代碼
+——+
1 row in set (0.00 sec)

+——+
| j_in |
+——+
| 2 |
+——+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

這裏涉及到一個元素的定義,in以及out ,in 可以在存儲過程外面定義他的值 ,如上例中,我在執行CALL cxercise1(@j_in)前執行,SET @j_in = 3 ,那麼第一個打印出來的select @j_in的值 就不是4,而是3.
out:在存儲過程外面不可定義他的值,只能在存儲過程中定義。
今天先這麼多

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