目录
介绍与特点
存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于调高数据处理的效率是有好处的。
存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。
特点:
封装,复用,可以接收参数,也可以返回数据,减少网络交互,效率提升
基本语法
创建
调用
查看
删除
案例
在命令行中使用(delimiter)
粘贴上面的创建存储过程语句后报错,以分号结尾
注意:
在命令行中,执行创建存储过程的SQL时,需要通过关键字delimiter指定SQL语句的结束符
以&&符结尾再次测试:
创建成功!使用完后记得换回分号
变量-系统变量
系统变量是MySQL服务器提供的,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话变量(SESSION)。
查看系统变量
设置系统变量
注意:
如果没有指定session/global,默认是session,会话变量。
mysql服务重新启动之后,所设置的全局参数会失效,要想不失效,可以在/etc/my.cnf中配置
变量-用户定义变量
用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名”使用就可以。其作用域为当前连接!
赋值
使用
注意:用户定义的变量无需对其进行声明或初始化,只不过获取到的值为null。
变量-局部变量
局部变量是根据需要定义的在局部生效的变量,访问之前,需要declare声明,可用作存储过程内的局部变量和输入参数,局部变量的范围是在其声明的begin...end块。
声明
变量类型就是数据库字段类型:int,bigint,char,varchar,date,time等
赋值
注意局部变量的使用范围仅在begin与end之间!
if判断
语法:
练习:
参数(IN、OUT、INOUT)
用法:
练习:
定义存储过程,完成如下需求:
case
语法一:
语法二:
练习:
定义存储过程,完成如下需求: