## 定義條件
作用 : 特定條件需要特定處理,這些條件可以聯系到錯誤,以及子程序中的一般流程控制.定義條件是事先定義程序執行過程中遇到的問題,處理程序定義了在遇到這些問題時應當采取的處理方式,并且保證存儲過程或函數在遇到警告或錯誤時才能繼續執行.這樣可以增強存儲過程程序處理問題的能力,避免程序異常停止運行.
```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操作
- 連接
- 創建數據庫
- 插入數據
- 插入多條數據
- 預處理語句
- 查詢數據
- 預處理語句
- 實戰應用
- 分表