一.介绍
二.基本语法
例子:
例子:
DEFINER表示的是创建用户
这是在可视化界面中创建存储过程,在命令行窗口中创建存储过程可能出现问题
可见报错,而且能看出报错的原因是把分号当成了sql语句的结束
解决方法:
例子:
这里改成以$$结束
三.变量
(1)系统变量![]()
全局变量在所有会话中都能访问
会话变量只在当前会话中生效
例子:
系统变量是很多的 几百个
没加级别默认是session级别
show session variables;
show session variables like 'auto%';
show global variables like 'auto%';
select @@global.autocommit;
set session autocommit = 0;
select @@session.autocommit;
注意事项:
(2)用户自定义变量
例子:
set @myname = 'itcast';
set @myage := 10;
set @mygender := '男',@myhobby := 'java';
select @myname,@myage,@mygender,@myhobby;
注意事项
例子:
select @abc;
结果为null
(3)局部变量
例子:
四.if判断
例子:
问题:
可以注意到score 是写死的,这里就需要引入参数
五.参数
例子:
这次不把score写死,并且不用select输出,而是返回
六.case
例子:
七.循环
(1)while
例子:
(2)repeat
例子:
(3)loop
例子:
在上一题的基础上加上
八.游标
引入:
我们想把student表里的数据存在stu_count中,但是stu_count是int类型
也就是说我们想要存结果集,简单的数据类型是做不到的,于是引出了游标
例子:
注意事项:
先创建局部变量再创建游标
九.条件处理程序(Handler)
引出:
如果你运行了上面的程序,你会发现报错了
因为循环的条件是while true
我们要遍历表,那我们怎么知道读取到最后一行数据,就结束呢?
于是引出条件处理程序(Handler)
例子:
循环中,读取完数据后,会通过handler 关闭游标并退出,不报错
十.存储函数
例子:
注意事项:
Mysql 8.x版本 默认二进制开启,开启的话,就会要求说明存储函数的特性
存储函数用的较少,因为存储函数必须有返回值,而且存储函数能干的,存储过程也能干