小白終是踏上了這條不歸路----小文的mysql學習筆記(21)---------儲存過程--儲存過程的建立、刪除和檢視
小白終是踏上了這條不歸路----小文的mysql學習筆記(21)---------儲存過程--儲存過程的建立、刪除和檢視
**
小白終是踏上了這條不歸路----小文的mysql學習筆記(1)
小白終是踏上了這條不歸路----小文的mysql學習筆記(2)----條件查詢
小白終是踏上了這條不歸路----小文的mysql學習筆記(3)----排序詢查
小白終是踏上了這條不歸路----小文的mysql學習筆記(4)----常見的基本函式
小白終是踏上了這條不歸路----小文的mysql學習筆記(5)----分組查詢 … 好處:** 1、提高程式碼的重用性。 3、減少了編譯次數並且減少了和資料庫伺服器的連線次數,提高了效率。
一、建立和呼叫語法
建立語法:
CREATE PROCEDURE 儲存過程名(引數列表) 儲存過程體(一組合法有效的sql語句)
END
解釋:
引數列表一共包括三個部分:引數模式、引數名、引數型別
示例: 引數模式(共三種) OUT 該引數可以作為輸出值,也就是該引數可以作為返回值
INOUT 該引數既可以作為輸入又可以作為輸出,也就是該引數既需要傳入值,又可以返回值。
注意: 如果儲存過程體僅僅只有一句話,那麼 BEGIN END 可以省略,並且 而這時我們儲存過程的結尾就需要自己來設定
語法:
delimiter 結束符號
舉個栗子:將$設定為我們儲存過程的結束符號。
注意:這裡後面不要加分號加了分號的話,就意味著結束符號是$;
呼叫語法:
call 儲存過程名(實參)
那麼下面我們來分別來舉一下示例來說說上面的幾種情況
1、空參的儲存過程
空參即括號內沒有引數
那麼我們來舉一個栗子:建立儲存過程,實現插入資料
DELIMITER $
CREATE PROCEDURE kz1()
BEGIN
INSERT INTO admin(`username`,`password`)
VALUES ("嘉文四世","5555"),("內瑟斯","5555"),("拉克絲","5555");
END $
當然儲存過程的建立要在命令提示符裡來建立,所以接下來我們在命令提示符裡進行建立 當然雖然我們的sql-yog裡不能用,但是我們建立之後重新整理sql-yog可以看到已經被建立好了的儲存過程 接下來我們來呼叫該儲存過程 呼叫成功,那麼我們來查詢我們的admin表就會發現已經被插入了三條資料
2、帶in模式的儲存過程
案例(1): 建立儲存過程實現,根據輸入的女神名,查詢出對應的男神資訊 呼叫:查詢熱巴的男朋友資訊 這便是一個簡單的使用,那麼下面我們再來做一個案例來理解一下
我們的admin表裡面儲存的資料就是賬號和密碼嘛,那麼下面我們舉一個有關的案例
案例(2): 建立一個儲存過程,當用戶輸入賬號和密碼時,判斷是否登入成功.。
ps:登入成功嘛就是 你輸入的賬號和密碼,在庫中找得到,那麼符合的資料的個數就不為0,那麼就為登入成功,如果你輸入的賬號和密碼,庫中找不到,那麼個數為0,即為登入失敗。
呼叫:
注: 當然這個案例你也可以不用設定區域性變數的辦法,你也可以直接在前面的count(*)那裡直接用if函式也是可以的。
3、帶out模式的儲存過程
同樣我們來做一個案例來理解一下
案例:根據輸入的女神名,返回它的男神的名字 呼叫: 因為這個值賦給了@name這個全域性變數 返回,所以我們呼叫之後再來查它,就是我們想要的結果。
ps:學到這,我目前感覺的話用 帶in模式的也可以完成這種情況,而且要簡單一些,然後用out模式,記得要在select 欄位 那裡進行賦值;然後還有在呼叫那裡要設定一個使用者變數,來作為返回的載體;當然這裡也可以用多個out來返回多個值,那麼後面就要甚至相對數量的定義變數。
那麼我們舉一個多個返回值的栗子:
ps:這裡多個返回值在select 那兒賦值的時候,我們是用逗號隔開,順序一致
呼叫:
4、帶inout模式的儲存過程
直接上案例:輸入任意兩個值,然後第一個數2倍返回,第二個數四倍返回 建立之後,這裡的兩個number是還沒有值的,然後我們需要傳入值,那麼就是設定兩個區域性變數。 於是兩個number便有了值,那麼接下來我們就可以呼叫儲存過程了 那麼我們傳入的值已經 根據我們設定的儲存過程 已經進行了執行,那麼我就可以來檢視結果 可以看到我們的返回值第一個變成了2倍,第二個變成了4倍。
二、儲存過程的刪除
語法:drop procedure 儲存過程名
那麼下面舉一個例子來刪除一個儲存過程
ps: 和我們前面的刪除表阿刪除檢視阿語法基本一致,但是檢視的刪除,可以同時刪除很多個;
but 但是這個儲存過程的刪除一次只能刪除一個.
三、儲存過程的檢視
相當於是檢視我們儲存過程的結構或者資訊
語法:show create procedure 儲存過程名
案例;檢視儲存過程kz1
注意: 我們的儲存過程的修改,一般只能修改就上的特點之類的,而且我們儲存過程中的邏輯語句是不能修改的,所以我們一般不會修改儲存過程。如果你要修改邏輯語句的話,那就只能將該流程控制刪除,重新建立一個符合你需要的儲存過程
-------------有一種期待叫 對方正在輸入中**