MySQL存储过程

含义:
一组预先编译好的SQL语句的集合,可理解成批处理语句。
作用:
1、提高代码的重用性;
2、简化操作;
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。

一、创建:
create procedure 存储过程名(参数列表) 
begin
		存储过程体(一组合法的sql语句)
end

注意:
1、参数列表包含三部分:
参数模式 参数名 参数类型
如:
IN name varchar(20)
参数模式:
IN:该参数可以作为输入,即需要调用方传入值
OUT:该参数可以作为输出,即可以作为返回值
INOUT:该参数即可作为输入,又可作为输出,即即需要传入值,又可以返回值。
2、若存储过程体仅有一条语句,则begin,end可省略。存储过程体中的每条sql语句结尾都要求加分号,其结尾可使用delimiter 重新设置。
语法:

delimiter 结束标记
如:
delimiter $
二、调用:
call 存储过程名(实参列表);

1、空参列表:
#案例:插入到admin表中五条记录:

delimiter $
create procedure myp1()
begin
	insert into admin(username, `password`) 
	values('John','000000'), ('Jack','000000'),('Lily','000000'),('Rose','000000'),('Tom','000000')
end $
call myp1 $

2、带IN模式参数的存储过程:
#案例1:创建存储过程实现,根据女神名,查询对应男神信息

create procedure myp2(IN beautyName varchar(20))
begin
	select bo.*
	from boys bo
	right join beauty b on bo.id = b.boyfriend_id
	where b.name = beautyName;  
end $
call myp2('Rose')$

#案例:创建存储过程实现用户是否登录成功:

create procedure myp3(IN username varchar(20), IN password varchar(20))
begin
	declare result int default 0; # 声明并初始化
	
	select count(*) into result   # 赋值
	from admin
	where admin.username = username
	adn admin.password = password;

	select if(result > 0, '成功','失败'); # 使用
end $
call myp3('张飞','8888')$

3、带OUT模式的存储过程
#案例:根据女神名,返回对应的男神名

create procedure myp4(IN beautyName varchar(20), OUT boyName varchar(20))
begin
		select bo.boyName
		from boys bo
		inner join beauty b on bo.id = b.bogfriend_id
		where b.name = beautyName;
end $
call myp4(‘小昭’, @bName) $
select @bName$

#案例:根据女神名,返回对应的男神名和男神魅力值

create procedure myp5(IN beautyName varchar(20), OUT boyName varchar(20), OUT userCP int )
begin
	select bo.boyName, bo.userCP into boyName, userCP
		from boys bo
		inner join beauty b on bo.id = b.bogfriend_id
		where b.name = beautyName;
end $
call myp5('小昭',@bName,@usercp)$

4、带INTOUT模式参数的存储过程:
#案例:传入a和b两个值,最终a和b都翻倍并返回

create procedure myp6(INOUT a int, INOUT b int)
begin
	set a = a*2;
	set b = b*2;
end $
set @m = 10$
set @n = 20$
call myp6(@m, @n)$
三、删除:
	drop procedure 存储过程名
四、查看存储过程的信息:
	show create procedure 存储过程名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值