## 定义条件
作用 : 特定条件需要特定处理,这些条件可以联系到错误,以及子程序中的一般流程控制.定义条件是事先定义程序执行过程中遇到的问题,处理程序定义了在遇到这些问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时才能继续执行.这样可以增强存储过程程序处理问题的能力,避免程序异常停止运行.
```sql
declare 条件的名称 condition for [条件的类型...];
```
参数介绍 - 条件的类型
|错误类型|介绍|
|-|-|
|sqlstate['value']|匹配指定5个字符串错误值|
|MySQL_error_code|匹配数值类型错误代码|
## 定义处理程序
```sql
declare 错误处理方式 handler for 错误类型[,...] 程序语句段;
```
### 参数介绍
+ 错误处理方式 :
|错误处理方式|介绍|
|-|-|
|continue|表示遇到错误不处理|
|exit|表示遇到错误马上退出|
|undo|表示遇到错误撤回之前操作|
+ 错误类型 :
|错误类型|介绍|
|-|-|
|sqlstate['value']|匹配指定5个字符串错误值|
|自定义条件名称|表示declare coneition定义的错误条件名称|
|sqlwarning|匹配所有以01开头的sqlstate错误代码|
|not found|匹配所有以02开头的sqlstate错误代码|
|sqlexception|匹配所有没有被sqlwarning或not found捕获的sqlstate错误代码|
|MySQL_error_code|匹配数值类型错误代码|
+ 程序语句段 : 表示在遇到定义的错误时,需要执行的存储过程或函数
### 例子
#### 捕获sqlstate['value']
```sql
declare continue handler for sqlstate '42S02' set @info='错误信息';
```
#### 捕获mysql_error_code
```sql
declare continue handler for 1146 set @info='错误信息';
```
#### 先定义再捕获
```sql
declare uuphp_error condition for 1146;
declare continue handler for uuphp_error set @info='错误信息';
```
#### 使用sqlwarning
```sql
declare exit handler for sqlwarning set @info='错误信息';
```
#### 使用not found
```sql
declare exit handler for not found set @info='错误信息';
```
#### 使用sqlexception
```sql
declare exit handler for sqlexception set @info='错误信息';
```
- 简介
- 数据库
- 数据表
- 创建数据表
- 查看数据表结构
- 修改数据表
- 删除数据表
- 查询数据
- 表单查询
- 聚合查询
- 链接查询
- 子查询
- 联合查询
- 正则查询
- 数据管理
- 数据类型
- 添加数据
- 更新数据
- 删除数据
- 索引
- 索引分类
- 设计原则
- 添加索引
- 查看索引
- 删除索引
- 视图
- 视图操作
- 视图应用
- 事务
- 触发器
- 存储过程和函数
- 变量
- 异常处理
- 光标
- 流程控制
- 存储过程
- 自定义函数
- 内置函数
- 数学
- 字符串
- 日期和时间
- 条件判断
- 系统信息
- 加/解密
- 其他
- 用户管理
- 登录和退出
- 新建用户
- 删除用户
- 修改用户
- 找回ROOT密码
- 权限管理
- 备份恢复
- 备份数据
- 恢复数据
- 日志
- 二进制日志
- 错误日志
- 查询日志
- 慢查询日志
- 性能优化
- 优化查询语句
- 优化数据库结构
- 优化服务器
- 主从复制
- WIN系统主从复制
- Linux单机主从复制
- Linux联机主从复制
- 参数配置
- 日常管理和维护
- 切换主从服务器
- PHP操作
- 连接
- 创建数据库
- 插入数据
- 插入多条数据
- 预处理语句
- 查询数据
- 预处理语句
- 实战应用
- 分表