MYSQL数据库进阶篇——存储过程
用户定义变量指用户自己定义的变量,用户变量不用提前声明,直接用“@变量名”使用即可,作用域为当前连接。例如:用户定义的变量不需要声明或初始化,默认为null;例如:3.局部变量局部变量是根据·定义在局部生效的变量,通过declare声明,可用作存储过程内的局部变量和输入参数,范围在begin...end之间。
·
存储过程是事先经过编译并存储在数据库中的一段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);
更多推荐




所有评论(0)