MySQL存储过程

本文详细介绍了MySQL的存储过程,包括创建、调用、删除存储过程的方法,并通过多个示例展示了IN、OUT、INOUT参数模式的使用。此外,还提供了查看存储过程信息的语法,帮助读者深入理解如何在实际操作中运用存储过程。
摘要由CSDN通过智能技术生成

MySQL存储过程

存储过程:类似于java中的方法
存储过程:预先编辑好SQL语句的集合,这个集合完成了某项具体的功能集合,需要这个功能集合的时候,就要调用这个存储过程就好了!

1、创建存储过程

MySQL创建存储过程语法:
create procedure 存储过程的名字(参数列表)
begin
		存储过程体
end
注意:
1、参数列表包含三个部分:参数模式	参数名	参数类型
						比如:in s_name varchar(20)
			 参数模式:
			 			in:该参数可以作为输入,需要调用方法传入值来给存储过程 
			 			out:该参数可以作为输出,该参数可以作为返回值给调用方
			 			inout:该参数可以作为输入,也可以作为输出
2、如果存储过程体只有一句SQL语句,begin和end可以省略;存储过程体里的SQL语句结尾处必须加分号,但是为了避免数据库误判为存储过程的结束标记,所以我们需要自定义命令的结尾符号;
		语法:delimiter 结尾标记			比如:delimiter $

2、调用存储过程

语法:call 存储过程的名字() 结尾标记

3、创建无参存储过程示例

存储过程示例:
delimiter $
create procedure myCunChu()
begin
		insert into age(id, age) values (1,'21');	--往age表中完成5条插入语句
		insert into age(id, age) values (2,'24');
		insert into age(id, age) values (3,'25');
		insert into age(id, age) values (4,'26');
end $
调用存储过程
call muCunChu() $

4、参数模式为IN的存储过程示例

示:1:
delimiter $
create procedure myCunChuIn(in s_name varchar(20))
begin
		select s.name, a.age from students s 
							inner join ages a
							on s.age_id = g.id
							where s.sname = s_name;
end $
调用存储过程:
call myCunChuIn('景旭') $
示例2:创建判断用户是否登录成功
delimiter $
create procedure myCunChuLogin(in username varchar(20), in password varchar(20))
begin
		declare res int default 0;		--定义一个字符串类型的变量,关键字为declare,变量名为res
		select count(*) into res from users u		--将查询结果赋值给变量res
				where u.username = username
					and u.password = password;
		select if(res > 0, '登陆成功', '登录失败');		--打印结果
end $
调用存储过程:
call myCunChuLogin('景旭', '123') $

5、参数模式为OUT的存储过程示例

示例1:根据学生姓名,返回对应的年龄
delimiter $
create procedure myCunChuOut(in sname varchar(20), out age int)
begin 
		select a.age into age from students s 
				inner join ages a s.age_id = a.id
				where s.sname = sname;
end $
调用:
call myCunChuOut('景旭', @age) $		--把值取出来放在变量里去
select @age $			--查看值

示例2:根据学生姓名,返回对应的年龄和学生编号
delimiter $
create procedure myCunChuOut2(in sname varchar(20), out age int, out sid int)
begin 
		select a.age, s.id into age, sid from students s
		inner join ages a on s.age_id = a.id
		where s.sname = sname;
end $
调用:
call myCunChuOut2('景旭', @age, @sid) $
select @age, @sid $

5、参数模式为INOUT的存储过程示例

案例:传入a和b两个数,然后让a和b都乘以2后返回
delimiter $
create procedure myCunChuInout(inout a int, inout b int)
begin 
		set a = a*2;
		set b = b*2
end $
调用:
set @a = 10 $
set @b = 20$
call myCunChuInout(@a, @b) $
select @a, @b $

6、删除存储过程

语法:drop procedure 存储过程名;			--每次只能删除一个

7、查看存储过程信息

语法:show create procedure 存储过程名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值