MYSQL数据库进阶篇——存储过程

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化开发工作,减少数据在数据库和服务器之间的传输,提高数据处理效率。

存储过程思想上很简单,就是数据库SQL语言的封装和复用

特点:封装、复用

可以接收参数,也可以返回数据

减少网络交互,效率提升

一.基本语法

1.创建存储过程:

2.调用:

3.查看和删除

例如:

二.变量

1.系统变量

系统变量是MYSQ服务器提供,不是用户定义的,属于服务器层面,分为全局变量和会话变量。

例如:

如果没有指定session/global,默认是session,会话变量。

服务器重启后,所设置的全局参数会失效,想不失效,可在/etc/my.cnf中配置。

2.用户定义变量

用户定义变量指用户自己定义的变量,用户变量不用提前声明,直接用“@变量名”使用即可,作用域为当前连接。

例如:

用户定义的变量不需要声明或初始化,默认为null;

例如:

3.局部变量

局部变量是根据·定义在局部生效的变量,通过declare声明,可用作存储过程内的局部变量和输入参数,范围在begin...end之间。

例如:

三.if条件判断

例如:

四.参数

例如:

五.case

例如:

六.循环

1.while循环

例如:

2.repeat循环

例如:

3.loop循环

七.cursor游标

游标用来存储查询结果集的数据类型,在存储过程和函数中可使用游标对结果集进行循环处理。

、例如:

create procedure p10(in uage int)
begin
    declare uname varchar(10);
    declare gender varchar(10);
    #创建游标(要先声明游标,再声明普通变量)
    declare u_cursor cursor for select name,gender from tb_user where age<=uage;
    #声明条件处理程序,当满足状态码为02000时退出操作,退出时关闭游标。
    declare exit handler for sqlstate '02000' close  u_cursor;
    create table if not exists tb_user_pro(
        id int primary key auto_increment,
        name varchar(10),
        gender varchar(10)
    );
    #开启游标
    open u_cursor;
    while true do
        #获取游标记录
        fetch u_cursor into uname,gender;
        insert into tb_user_pro values (null,uname,gender);
        end while;
    #关闭游标
    close u_cursor;

end;

call p10(40);

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值