5、带out模式的存储过程
1)案例一:创建一个存储过程,根据女神名,返回对应的男神名。
代码如下:
-- 创建一个存储过程 delimiter $ create procedure myp4(in beautyName varchar(20),out boyName varchar(20)) begin select b.boyName into boyName from beauty left join boys b on beauty.boyfriend_id=b.id where beauty.name=beautyName; end $ -- 调用 # 重新定义一个变量@boyname接收返回值boyName。 call myp4("赵敏",@boyname)$ select @boyname$ call myp4("柳岩",@boyname)$ select @boyname$
效果如下:
2)案例二:创建一个存储过程,根据女神名,返回对应的男神名和男神魅力值。
代码如下:
-- 创建一个存储过程 delimiter $ create procedure myp5(in beautyName varchar(20),out boyName varchar(20),out userCP int) begin select b.boyName,b.userCP into boyName,userCP from beauty left join boys b on beauty.boyfriend_id=b.id where beauty.name=beautyName; end $ -- 调用 # 重新定义一个变量@boyname接收返回值boyName。 call myp5("赵敏",@boyname,@usercp)$ select @boyname,@usercp$ call myp5("柳岩",@boyname,@usercp)$ select @boyname,@usercp$
效果如下:
6、带inout模式的存储过程
1)案例1:传入a和b两个值,最终a和b都翻倍并返回。
代码如下:
-- 创建一个存储过程 delimiter $ 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)$ select @m,@n$
效果如下:
7、存储过程的案例解析
创建存储过程或函效,实现传入用户名和密码,插入到admin表中。
创建储过程或函数,实现传入女神编号,返回女神名称和女神电话。
创建存储存储过程或函数,实现传入两个女神生日,返回大小。
1)创建存储过程或函效,实现传入用户名和密码,插入到admin表中。
代码如下:
-- 创建一个存储过程 delimiter $ create procedure pro1(in username varchar(20),in userpwd varchar(20)) begin insert into admin(username,`password`) values (username,userpwd); end $ -- 调用存储过程 call pro1("鲁智深","123abc")$ select * from admin$
效果如下:
2)创建储过程或函数,实现传入女神编号,返回女神名称和女神电话。
代码如下:
-- 创建一个存储过程 delimiter $ create procedure pro2(in id int,out beautyName varchar(20),out beautyPhone varchar(20)) begin select beauty.name,beauty.phone into beautyName,beautyPhone from beauty where beauty.id=id; end $ -- 调用存储过程 call pro2(2,@beautyname,@beautyphone)$ select @beautyname,@beautyphone$ call pro2(3,@beautyname,@beautyphone)$ select @beautyname,@beautyphone$
效果如下:
3)创建存储存储过程或函数,实现传入两个女神生日,返回大小。
代码如下:
-- 创建一个存储过程 delimiter $ create procedure pro3(in borndate1 datetime,in borndate2 datetime,out result int) begin select datediff(borndate1,borndate2) into result; end $ -- 调用存储过程 call pro3("1993-8-12",now(),@result)$ select @result$