您好,登錄后才能下訂單哦!
MySQL中怎么使用存儲過程,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
存儲過程(Stored Procedure)是一種在數據庫中存儲復雜程序,以便外部程序調用的一種數據庫對象。目的是為了完成特定功能的SQL語句集,經編譯創建并保存在數據庫中,用戶可通過指定存儲過程的名字并給定參數(需要時)來調用執行。說白了就是數據庫 SQL語言層面的代碼封裝與重用。創建的存儲過程通常保存在數據庫的數據字典中。
1.創建存儲過程
create procedure 存儲過程名(參數列表) begin 存儲過程體(一組合法的sql語句) end
參數列表包含3個部分:
參數模式 參數名 參數類型。
舉例:IN userid varchar(20)
參數模式有3個:
鴻蒙官方戰略合作共建——HarmonyOS技術社區
in:傳入接收
out:輸出,作為返回值
inout:既可以作為輸入,也可作為輸出
begin ... end 使用:
如果存儲過程體僅有一句話,begin end 可以不寫
存儲過程的每條sql語句結尾必須加分號結束
存儲過程的結尾使用delimiter重新設置
delimiter $ ... $
2.調用存儲過程語法
CALL 存儲過程名(參數列表)
3.創建和調用案例解析
①.空參數列表
# 空參數存儲過程案例 # 創建存儲過程 DELIMITER $ #修改存儲過程的結束標識符號 CREATE PROCEDURE myP1() BEGIN insert into demo01 (id,name,age,sex) values (10011,"jalen",27,1), (10021,"xiar",26,1), (10031,"heli",24,0), (10041,"weiwei",28,1); END $ DELIMITER ; #把結束標識改回去 # 調用存儲過程 CALL myP1(); # 查看表結果 select * from demo01;
②.in模式參數的存儲過程
輸入單個參數的存儲過程
# 2.1 in模式參數的存儲過程,輸入單個參數 # 創建存儲過程 DELIMITER $ CREATE PROCEDURE myP2(IN InName varchar(20) ) BEGIN SELECT * from demo01 where name = InName; END $ DELIMITER ; #把結束標識改回去
# 調用存儲過程 CALL myP2("jalen") ;
輸入多個個參數的存儲過程
# 2.2 in模式參數的存儲過程,輸入多個參數 # 創建存儲過程 DELIMITER $ CREATE PROCEDURE myP3(IN InAge int ,IN InSex int ) BEGIN DECLARE res varchar(20) default ""; # 申明一個局部變量res SELECT name into res # 賦值 FROM demo01 WHERE age = InAge AND sex = InSex; SELECT res; #使用局部變量 END $ DELIMITER ;
# 調用存儲過程 CALL myP3(27,1);
③.out模式參數的存儲過程
# 3.out模式參數的存儲過程 #創建存儲過程 delimiter $ #修改存儲過程的結束標識 CREATE PROCEDURE myP4(IN name varchar(20), out age int, out sex int) BEGIN select demo01.age,demo01.sex into age,sex from demo01 where demo01.name = name; END $ DELIMITER ;
#調用 CALL myP4("jalen",@age,@sex); select @age,@sex;
④.inout模式參數的存儲過程
# 4.inout模式參數的存儲過程 #創建存儲過程 delimiter $ #修改存儲過程的結束標識 CREATE PROCEDURE myP5(inout m int ,inout n int) BEGIN set m := m+10; set n := n+10; END $ DELIMITER ;#改回原有的結束標識分號
# 調用 set @a := 5,@b :=10; CALL myP5(@a,@b); select @a,@b;
4.刪除存儲過程
語法:drop procedure 存儲過程名稱
注意:一次只能刪除一個存儲過程
案例:drop procedure myP1;
5.查看存儲過程的信息
show create procedure 存儲名;
看完上述內容,你們掌握MySQL中怎么使用存儲過程的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。