mysql(六)(存储过程)

存储过程

 

创建存储过程

开发过程中,经常会遇到重复使用某一功能的情况。为此,mysql引入了存储过程。存储过程就是一条或多条sql语句的集合,当队数据库进行一系列复杂操作时,存储过程可以将这些复杂操作封装或一个代码块,以便重复使用。

create procedure sp_name ([proc paramenter]) [characteristics...] routine_body
  • sp_name——存储过程的名称
  • proc paramenter——参数列表

 

创建存储过程的例子

创建一张表

 

 

DELIMITER ——用于定义标志语句结束的结束符

 

 下图创建了一个存储过程proc,功能为select * from student     。传入的参数为空(即proc(),如果想传入参数,可以将参数写在空格里)

定义结束符的目的——mysql中默认的结束符是 :,如果不顶用别的结束符,当执行到select * from student ;时,系统认为这句执行结束了,就退了,就无法创建存储过程,更不用说在存储过程里面执行多条语句了。

创建完存储过程之后,记得把结束符改回——;

 

 

调用存储过程

 

使用关键字call调用存储过程

 

 

 

查看存储过程

 

1、show status

 

 

2、show create 

 

3、直接从表中查询存储过程的方式

 

 

 

修改存储过程

 

1、修改存储过程的特性

 

2、修改存储过程的内容

mysql目前不支持

 

 

 

删除存储过程

 

 


存储过程中变量的使用

 

定义变量

 

变量的声明一定是在存储过程的begin和end之间,作用范围是当前的存储过程

declare var_name [,varname] _date_type [default value];

 

例子——定义一个名称为myvariable的变量,类型为int类型,默认值为100。

 

 

修改变量

 

方式一

set var_name = expr [, var_name=expr]...;

 

方式二

用查询的方式,从数据库中获取数据,赋值给某个变量

例子——定义变量,保存学生表中查询到的班级信息和性别性别信息 

 

 


存储过程中定义条件和处理程序

 

定义一些条件,当符合这些条件时,我们应该使用怎样的处理程序对其进行处理。这就是定义条件和处理程序

 

定义条件

declare condition_name condition for [condition_type];

condition_type有两种形式

  • sqlstate [value] sqlstate_value
  • mysql_error_code

 

例子——定义如下所示的条件

上图中error_code是1149,sqlstate是42000

 

题目——定义error 1149(42000) 错误,名称为command_not_allowed;

declare command_not_allowed condition for SQLSTATE 42000;

declare command_not_allowed condition for 1149;

 

 

定义处理程序

handler_type有三种类型

  • continue——表示遇到错误不处理,继续执行
  • exit——遇到错误马上退出
  • undo——遇到错误之后撤回之前的操作,mysql目前不支持

condition_value

  • sqlstate[value]——sqlstate_value包含五个字符的字符串错误值
  • condition_name——表示declare condition定义的错误名称
  • sqlwarning ——匹配所有以01开头的sqltate错误码
  • not found—— 匹配所有以02开头的sqltate错误码
  • sqlexception——匹配所有没有被sqlwarning或not found捕获的sqlstate错误代码
  • mysql_error_code匹配数值类型错误代码

 

 

光标(游标)的使用

用于从一堆的遍历结果中查询我们要的结果

 

声明

 

使用

使用open语句打开光标,使用fetch语句从中获取一个数据,赋值到变量(该变量需要在游标使用之前就定义好)中

 

关闭游标

 

 


存储过程中的流程控制

 

if

 

例子

创建一个存储过程判断变量V是否是null,输出对应的信息

1、先创建存储过程

2、调用存储过程

 

 

case

 

例子

 

 

 

loop

 

例子

 

 

 

repeat——和do while很像

用于创建一个带有条件判断的循环,每次语句执行完毕之后,会对表达式进行判断。如果表达式为真,则循环结束;否则,重复执行循环语句中的内容。

 

 

while

 

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值