存储过程
好处
1.提高代码的重用性
2.简化操作
3.减少编译次数
4.减少和数据库服务器的连接次数,提高效率
含义
一组预先编译好的SQL语句集合,理解成批处理语句
创建
DELIMITER 结束标志符
create procedure 存储过程名(参数模式 参数名 参数类型)
begin
存储过程体
end 结束标志符
注意
1.参数列表包含三部分:参数模式,参数名,参数类型
2.参数模式:
IN:该参数可以作为输入,也就是该参数需要调用方传入值
OUT:该参数可以作为输出,也就是该参数可以作为返回值
INOUT:该参数既可以作为输入也可以作为输出,也就是该参数既需要传入值,又可以返回值
3.如果存储过程只有一句话,begin end可以省略
4.存储过程体的每一条sql语句都需要用分号结尾
调用
call 存储过程名(实参列表);
1.空参列表
案例1:插入到admin表中五条记录
DELIMITER $
create procedure mvp1()
begin
insert into admin(username,`password`)
values
('john1','0000'),
('lily','0000'),
('rose','0000'),
('jack','0000'),
('tom','0000');
end $
call mvp1()$
2.in模式的储存过程
案例1:根据女神名,查取对应的男神信息
DELIMITER $
create procedure mvp2(in beautyname varchar(20))
begin
select bo.*,b.* from boys bo
right join beauty b
on bo.id=b.boyfriend_id
where b.name = beautyname;
end $
call mvp2('柳岩')$
案例2:判断用户是否登陆成功
DELIMITER $
create procedure mvp3(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 mvp3('张飞','8888')$
3.out模式的储存过程
案例1:根据女神名返回对应的男神名
DELIMITER $
create procedure mvp4 (in beautyName varchar(20),out boyName varchar(20))
begin
select bo.boyName into boyName
from boys bo
inner join beauty b on bo.id=b.boyfriend_id
where b.name = beautyName;
end $
call mvp4('小昭',@bName)$
select @bName$
4.inout模式的存储过程
案例:传入a和b两个值,最终a,b都翻倍并返回
DELIMITER $
create procedure mvp (inout a int,inout b int)
begin
set a=a*2;
set b=b*2;
end $
set @m=10$
set @n=20$
call mvp (@m,@n)$
select @m,@n$
查看
show create procedure 存储过程名;
删除
drop procedure 存储过程名;
函数
创建
调用
查看
删除
如果有其他问题欢迎留言或邮件提问
QQ:1269112498
Email:1269112498@qq.com
相关文章