嘘~ 正在从服务器偷取页面 . . .

MySQL数据库(七)——存储过程和函数


存储过程

好处

1.提高代码的重用性
2.简化操作
3.减少编译次数
4.减少和数据库服务器的连接次数,提高效率

含义

一组预先编译好的SQL语句集合,理解成批处理语句

创建

DELIMITER 结束标志符
create procedure 存储过程名(参数模式 参数名 参数类型)
begin
        存储过程体
end 结束标志符

注意

1.参数列表包含三部分:参数模式,参数名,参数类型
2.参数模式:
IN:该参数可以作为输入,也就是该参数需要调用方传入值
OUT:该参数可以作为输出,也就是该参数可以作为返回值
INOUT:该参数既可以作为输入也可以作为输出,也就是该参数既需要传入值,又可以返回值
3.如果存储过程只有一句话,begin end可以省略
4.存储过程体的每一条sql语句都需要用分号结尾

调用

call 存储过程名(实参列表);

1.空参列表

案例1:插入到admin表中五条记录

DELIMITER $
create procedure  mvp1()
begin
    insert into admin(username,`password`)  
    values
    ('john1','0000'),
    ('lily','0000'),
    ('rose','0000'),
    ('jack','0000'),
    ('tom','0000');
end $

call mvp1()$

2.in模式的储存过程

案例1:根据女神名,查取对应的男神信息

 DELIMITER $
 create procedure mvp2(in beautyname varchar(20))
 begin
    select bo.*,b.* from boys bo
    right join beauty b 
    on bo.id=b.boyfriend_id
    where b.name = beautyname;
 end $

 call mvp2('柳岩')$

案例2:判断用户是否登陆成功

DELIMITER $
 create procedure mvp3(in username varchar(20),in password varchar(20))
 begin 
    # 声明并初始化
    declare result int default 0;
    # 赋值
    select count(*) into result
    from admin
    where admin.username = username
    and admin.password = password;
    # 使用
    select if(result>0,'成功','失败');
 end $

 call mvp3('张飞','8888')$

3.out模式的储存过程

案例1:根据女神名返回对应的男神名

 DELIMITER $
 create procedure mvp4 (in beautyName varchar(20),out boyName varchar(20))
 begin
    select bo.boyName into boyName
    from boys bo
    inner join beauty b on bo.id=b.boyfriend_id
    where b.name = beautyName;
 end $


 call mvp4('小昭',@bName)$
 select @bName$

4.inout模式的存储过程

案例:传入a和b两个值,最终a,b都翻倍并返回

DELIMITER $
create procedure mvp (inout a int,inout b int)
begin
    set a=a*2;
    set b=b*2;
end $

set @m=10$
set @n=20$
call mvp (@m,@n)$
select @m,@n$

查看

show create procedure 存储过程名;

删除

drop procedure 存储过程名;

函数

创建

调用

查看

删除

如果有其他问题欢迎留言或邮件提问

QQ:1269112498

Email:1269112498@qq.com

相关文章


文章作者: 刘天翼
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 刘天翼 !
评论
  目录