## 定义条件
作用 : 特定条件需要特定处理,这些条件可以联系到错误,以及子程序中的一般流程控制.定义条件是事先定义程序执行过程中遇到的问题,处理程序定义了在遇到这些问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时才能继续执行.这样可以增强存储过程程序处理问题的能力,避免程序异常停止运行.
```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='错误信息';
```