MySQL存儲(chǔ)過程
存儲(chǔ)過程是一組預(yù)先編譯好的SQL語句的集合
好處:
- 提高了代碼的重用性
- 簡(jiǎn)化操作
- 減少了編譯次數(shù)并且減少了和數(shù)據(jù)庫(kù)連接次數(shù)想诅,提高效率
創(chuàng)建存儲(chǔ)過程
#語法 參數(shù)列表包含三部分 參數(shù)模式 參數(shù)名 參數(shù)類型 如 IN name varchar(20)
# 如果begin end中只有一條語句媚送,begin end可以省略
# 存儲(chǔ)過程體的每個(gè)SQL語句結(jié)尾都要使用分號(hào),所以需要使用delimiter重新設(shè)置結(jié)束標(biāo)記
create procedure 存儲(chǔ)過程名(參數(shù)列表)
begin
存儲(chǔ)過程體
end
參數(shù)模式
- IN 該參數(shù)可以作為輸入,需要調(diào)用方傳入
- OUT 該參數(shù)可以作為輸出术裸,作為返回值
- INOUT 該參數(shù)既可以作為輸入敞斋,也可以作為輸出
執(zhí)行存儲(chǔ)過程
call 存儲(chǔ)過程名(參數(shù)列表)
刪除存儲(chǔ)過程
drop procedure 存儲(chǔ)過程名
查看存儲(chǔ)過程信息
show create procedure 存儲(chǔ)過程名;
示例
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é)束符改回來
set @m=10; #設(shè)置變量
call mypro(1,@stu_name,@class_name,@m);
select @stu_name,@class_name,@m; #查詢結(jié)果
由于本身的博客百度沒有收錄,博客地址http://zhhll.icu