MySQL存儲(chǔ)過(guò)程

原文鏈接http://zhhll.icu/2021/%E6%95%B0%E6%8D%AE%E5%BA%93/%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93/MySQL/MySQL%E5%AD%98%E5%82%A8%E8%BF%87%E7%A8%8B/

MySQL存儲(chǔ)過(guò)程

存儲(chǔ)過(guò)程是一組預(yù)先編譯好的SQL語(yǔ)句的集合

好處:

  • 提高了代碼的重用性
  • 簡(jiǎn)化操作
  • 減少了編譯次數(shù)并且減少了和數(shù)據(jù)庫(kù)連接次數(shù),提高效率

創(chuàng)建存儲(chǔ)過(guò)程

#語(yǔ)法  參數(shù)列表包含三部分  參數(shù)模式 參數(shù)名 參數(shù)類型 如 IN name varchar(20)
# 如果begin end中只有一條語(yǔ)句,begin end可以省略
# 存儲(chǔ)過(guò)程體的每個(gè)SQL語(yǔ)句結(jié)尾都要使用分號(hào),所以需要使用delimiter重新設(shè)置結(jié)束標(biāo)記
create procedure 存儲(chǔ)過(guò)程名(參數(shù)列表)
begin
    存儲(chǔ)過(guò)程體
end

參數(shù)模式

  • IN 該參數(shù)可以作為輸入,需要調(diào)用方傳入
  • OUT 該參數(shù)可以作為輸出,作為返回值
  • INOUT 該參數(shù)既可以作為輸入,也可以作為輸出

執(zhí)行存儲(chǔ)過(guò)程

call 存儲(chǔ)過(guò)程名(參數(shù)列表)

刪除存儲(chǔ)過(guò)程

drop procedure 存儲(chǔ)過(guò)程名

查看存儲(chǔ)過(guò)程信息

show create procedure 存儲(chǔ)過(guò)程名;

示例

delimiter $ #更改結(jié)束符
create procedure mypro(IN stu_id int, #入?yún)?學(xué)生id
                       out stu_name varchar(20), #返參 學(xué)生名
                       out class_name varchar(20), #返參 班級(jí)名
                       inout a int) #測(cè)試inout
begin 
    select s.name,c.name into stu_name,class_name  #將查到的學(xué)生名和班級(jí)名賦值給返參stu_name,class_name  stu_name,class_name處于用戶變量
    from student s 
    join class c on s.classid = c.id
    where s.id = stu_id;  #根據(jù)學(xué)生id查詢學(xué)生名和班級(jí)名
    set a = a * 2; #給inout參數(shù)賦值 a是用戶變量
end $
delimiter ; #結(jié)束符改回來(lái)

set @m=10; #設(shè)置變量
call mypro(1,@stu_name,@class_name,@m);

select @stu_name,@class_name,@m; #查詢結(jié)果

由于本身的博客百度沒(méi)有收錄,博客地址http://zhhll.icu

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容