MySQL基础—存储过程和函数

存储过程和函数

含义:存储过程和函数:类似于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 存储过程名称

存储过程无法修改,想要更改,只能删除重建。

 

posted @ 2020-12-01 20:58  puffffff  阅读(94)  评论(0)    收藏  举报