您好,登錄后才能下訂單哦!
mysql存儲過程有哪些使用技巧?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純热?,讓我們一起來看看吧?/p>
mysql存儲過程使用技巧有:1、創(chuàng)建帶in模式參數(shù)的存儲過程;2、創(chuàng)建out模式參數(shù)的存儲過程;3、創(chuàng)建帶inout模式參數(shù)的存儲過程。
mysql存儲過程使用技巧有:
定義
一組預先編譯好的SQL語句的集合,理解成批處理語句,類似于java中的方法
1、提高代碼的重用性
2、簡化操作
3、減少了編譯次數(shù)并且減少了和數(shù)據(jù)庫服務器的連接次數(shù),提高了效率
創(chuàng)建語法
CREATE PROCEDURE 存儲過程名(參數(shù)列表) BEGIN 存儲過程體(一組合法的SQL語句) END
參數(shù)列表包含三部分
參數(shù)模式 參數(shù)名 參數(shù)類型
舉例:
in stuname varchar(20)
參數(shù)模式:
in:該參數(shù)可以作為輸入,也就是該參數(shù)需要調用方傳入值
out:該參數(shù)可以作為輸出,也就是該參數(shù)可以作為返回值
inout:該參數(shù)既可以作為輸入又可以作為輸出,也就是該參數(shù)既需要傳入值,又可以返回值
如果存儲過程體僅僅只有一句話,begin end可以省略
存儲過程體中的每條sql語句的結尾要求必須加分號。
存儲過程的結尾可以使用 delimiter 重新設置
語法:
delimiter 結束標記
案例:
delimiter $
調用語法
CALL 存儲過程名(實參列表);
空參列表
插入到admin表中五條記錄
SELECT * FROM admin; DELIMITER $ CREATE PROCEDURE myp1() BEGIN INSERT INTO admin(username,`password`) VALUES('john1','0000'),('lily','0000'),('rose','0000'),('jack','0000'),('tom','0000'); END $ #調用 CALL myp1()$
創(chuàng)建帶in模式參數(shù)的存儲過程
創(chuàng)建存儲過程實現(xiàn) 根據(jù)女神名,查詢對應的男神信息 CREATE PROCEDURE myp2(IN beautyName VARCHAR(20)) BEGIN SELECT bo.* FROM boys bo RIGHT JOIN beauty b ON bo.id = b.boyfriend_id WHERE b.name=beautyName; END $ #調用 CALL myp2('柳巖')$
創(chuàng)建存儲過程實現(xiàn),用戶是否登錄成功
CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20)) BEGIN DECLARE result INT DEFAULT 0;#聲明并初始化 SELECT COUNT(*) INTO result#賦值 FROM admin WHERE admin.username = username AND admin.password = PASSWORD; SELECT IF(result>0,'成功','失敗');#使用 END $ #調用 CALL myp3('張飛','8888')$
創(chuàng)建out 模式參數(shù)的存儲過程
根據(jù)輸入的女神名,返回對應的男神名
CREATE PROCEDURE myp6(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20)) BEGIN SELECT bo.boyname INTO boyname FROM boys bo RIGHT JOIN beauty b ON b.boyfriend_id = bo.id WHERE b.name=beautyName ; END $
根據(jù)輸入的女神名,返回對應的男神名和魅力值
CREATE PROCEDURE myp7(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20),OUT usercp INT) BEGIN SELECT boys.boyname ,boys.usercp INTO boyname,usercp FROM boys RIGHT JOIN beauty b ON b.boyfriend_id = boys.id WHERE b.name=beautyName ; END $ #調用 CALL myp7('小昭',@name,@cp)$ SELECT @name,@cp$
創(chuàng)建帶inout模式參數(shù)的存儲過程
傳入a和b兩個值,最終a和b都翻倍并返回
CREATE PROCEDURE myp8(INOUT a INT ,INOUT b INT) BEGIN SET a=a*2; SET b=b*2; END $ #調用 SET @m=10$ SET @n=20$ CALL myp8(@m,@n)$ SELECT @m,@n$
刪除存儲過程
drop procedure 存儲過程名 DROP PROCEDURE p1; DROP PROCEDURE p2,p3;#×
查看存儲過程的信息
DESC myp2; SHOW CREATE PROCEDURE myp2;
感謝各位的閱讀!看完上述內容,你們對mysql存儲過程有哪些使用技巧大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。