标签:存储 20 函数 create bo 参数 MySQL procedure
存储过程和函数
含义:存储过程和函数:类似于java中的方法。
好处:1、提高代码的重用性
2、简化操作
存储过程:一组预先编译好的SQL语句的集合,理解成批处理语句。
1、提高代码的重用性
2、简化操作
3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。
一、创建语法
create procedure 存储过程名(参数列表)
begin
存储过程体(一组合法的SQL语句)
end
注意:
1、参数列表包含三部分
参数模式、参数名、参数类型
举例:
in stuname varchar(20)
参数模式:
in:该参数可以作为输入,该参数需要调用方传入值
out:该参数可以作为输出,也就是该参数可以作为返回值。
inout:该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值。
2、如果存储过程体仅仅只有一句话,begin end 可以省略。
存储过程中的每条sql语句的结束要求必须加分号
存储过程的结尾可以使用delimiter重新设置
delimiter结束标记
delimiter $
二、调用列表
call 存储过程(实参列表);
创建带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 n.name = beautyname;
end $
调用
call myp2('刘燕')
案例2:创建存储过程,实现用户是否登录成功
create procedure myp3(in username varchar(20),in password varchar(20))
begin
declare result int(20) default '';声明并初始化
select count(*) into result 赋值
from admin
where admin.username = username
and admin.password = password;
select if(result>0,'成功','失败'); 使用
end $
创建带out模式的储存类型
案例1:根据女神名,返回对应的男神名
create procedure myp5(in beauty varchar(50),out boyname varcha(20))
begin
select bo.boyname into boyname
from boys bo
inner join beauty b on bo.id = b.bo.boyfriend
where b.name = beautyname;
end $
案例2:根据女神名,返回对应的男神名和男神魅力值
create procedure myp6(in beautyname varchar(20),out boyname varcha(20),out usercp int)
begin
select bo.boyname ,bo.usercp into boyname,usercp
from boys bo
inner join beauty b on bo.id = b.bo.boyfriend
where b.name = beautyname;
end $
4、创建带inout模式的存储过程
案例1:传入a和b两个值,最终a和b的翻倍并返回
create procedure myp8(into a int,inout b int)
begin
set a = a*2
set b = b*2
end $
调用
set @m = 10$
set @n = 20$
call myp8(@m,@n)
二、删除存储过程
语法:
drop procedure 存储过程名称
三、查看存储过程
语法:
show create procedure 存储过程名称
存储过程无法修改,想要更改,只能删除重建。
标签:存储,20,函数,create,bo,参数,MySQL,procedure 来源: https://www.cnblogs.com/puffffff/p/14065750.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。