溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL中怎么使用存儲(chǔ)過程

發(fā)布時(shí)間:2021-07-26 15:55:58 來源:億速云 閱讀:376 作者:Leah 欄目:數(shù)據(jù)庫

MySQL中怎么使用存儲(chǔ)過程,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

 mysql存儲(chǔ)過程

存儲(chǔ)過程(Stored  Procedure)是一種在數(shù)據(jù)庫中存儲(chǔ)復(fù)雜程序,以便外部程序調(diào)用的一種數(shù)據(jù)庫對(duì)象。目的是為了完成特定功能的SQL語句集,經(jīng)編譯創(chuàng)建并保存在數(shù)據(jù)庫中,用戶可通過指定存儲(chǔ)過程的名字并給定參數(shù)(需要時(shí))來調(diào)用執(zhí)行。說白了就是數(shù)據(jù)庫  SQL語言層面的代碼封裝與重用。創(chuàng)建的存儲(chǔ)過程通常保存在數(shù)據(jù)庫的數(shù)據(jù)字典中。

MySQL中怎么使用存儲(chǔ)過程

1.創(chuàng)建存儲(chǔ)過程

create procedure 存儲(chǔ)過程名(參數(shù)列表) begin     存儲(chǔ)過程體(一組合法的sql語句) end

參數(shù)列表包含3個(gè)部分:

  • 參數(shù)模式 參數(shù)名 參數(shù)類型。

  • 舉例:IN userid varchar(20)

  • 參數(shù)模式有3個(gè):

  1. 鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)

  2. in:傳入接收

  3. out:輸出,作為返回值

  4. inout:既可以作為輸入,也可作為輸出

begin ... end 使用:

  • 如果存儲(chǔ)過程體僅有一句話,begin end 可以不寫

  • 存儲(chǔ)過程的每條sql語句結(jié)尾必須加分號(hào)結(jié)束

  • 存儲(chǔ)過程的結(jié)尾使用delimiter重新設(shè)置

delimiter $ ... $

2.調(diào)用存儲(chǔ)過程語法

CALL 存儲(chǔ)過程名(參數(shù)列表)

3.創(chuàng)建和調(diào)用案例解析

①.空參數(shù)列表

# 空參數(shù)存儲(chǔ)過程案例  # 創(chuàng)建存儲(chǔ)過程 DELIMITER $ #修改存儲(chǔ)過程的結(jié)束標(biāo)識(shí)符號(hào) 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 ; #把結(jié)束標(biāo)識(shí)改回去  # 調(diào)用存儲(chǔ)過程 CALL myP1(); # 查看表結(jié)果 select * from demo01;

MySQL中怎么使用存儲(chǔ)過程

②.in模式參數(shù)的存儲(chǔ)過程

輸入單個(gè)參數(shù)的存儲(chǔ)過程

# 2.1 in模式參數(shù)的存儲(chǔ)過程,輸入單個(gè)參數(shù) # 創(chuàng)建存儲(chǔ)過程 DELIMITER $  CREATE PROCEDURE myP2(IN InName varchar(20) ) BEGIN  SELECT * from demo01 where name = InName; END $  DELIMITER ; #把結(jié)束標(biāo)識(shí)改回去
# 調(diào)用存儲(chǔ)過程 CALL myP2("jalen") ;

MySQL中怎么使用存儲(chǔ)過程

輸入多個(gè)個(gè)參數(shù)的存儲(chǔ)過程

# 2.2 in模式參數(shù)的存儲(chǔ)過程,輸入多個(gè)參數(shù) # 創(chuàng)建存儲(chǔ)過程 DELIMITER $ CREATE PROCEDURE myP3(IN InAge int ,IN InSex int ) BEGIN  DECLARE res varchar(20) default ""; # 申明一個(gè)局部變量res    SELECT name into res # 賦值   FROM demo01  WHERE age = InAge AND sex = InSex;    SELECT res; #使用局部變量 END $ DELIMITER ;
# 調(diào)用存儲(chǔ)過程 CALL myP3(27,1);

MySQL中怎么使用存儲(chǔ)過程

③.out模式參數(shù)的存儲(chǔ)過程

# 3.out模式參數(shù)的存儲(chǔ)過程 #創(chuàng)建存儲(chǔ)過程 delimiter $ #修改存儲(chǔ)過程的結(jié)束標(biāo)識(shí) 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 ;
#調(diào)用 CALL myP4("jalen",@age,@sex); select @age,@sex;

MySQL中怎么使用存儲(chǔ)過程

④.inout模式參數(shù)的存儲(chǔ)過程

# 4.inout模式參數(shù)的存儲(chǔ)過程 #創(chuàng)建存儲(chǔ)過程 delimiter $ #修改存儲(chǔ)過程的結(jié)束標(biāo)識(shí) CREATE PROCEDURE myP5(inout m int ,inout n int) BEGIN   set m := m+10;  set n := n+10; END $ DELIMITER ;#改回原有的結(jié)束標(biāo)識(shí)分號(hào)
# 調(diào)用 set @a := 5,@b :=10; CALL myP5(@a,@b); select @a,@b;

MySQL中怎么使用存儲(chǔ)過程

4.刪除存儲(chǔ)過程

  • 語法:drop procedure 存儲(chǔ)過程名稱

  • 注意:一次只能刪除一個(gè)存儲(chǔ)過程

  • 案例:drop procedure myP1;

5.查看存儲(chǔ)過程的信息

  • show create procedure 存儲(chǔ)名;

看完上述內(nèi)容,你們掌握MySQL中怎么使用存儲(chǔ)過程的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI