MySQL-异常机制
MySQL中的异常处理分为定义条件
(可选)和处理程序
定义条件是事先定义程序执行过程中可能遇到的问题
处理程序定义了在絮叨问题时采取的处理方式,并且保证存储过程或函数在遇到警告或者错误时能继续执行
定义条件
定义条件就是给MySQL中的错误码命名,这有助于存储的程序代码更清晰。它将一个错误名字和指定的错误条件关联起来。这个名字可以随后被用在定义处理程序的 DECLARE HANDLER语句中
语法
declare 错误名称 condition for 错误码
错误名称
为错误码自定义的名称
错误码
mysql_error_code和sqlstate_value都可以表示mysql的的错误
- mysql_error_code:数值类型的错误码
- sqlstate_value:长度为5的字符串类型错误码,这种方式为了避免MySQL为我们隐式的转换为数值类型,需要在在错误码前加上
sqlstate
例如:在ERROR 1418(HY000)中,1418是mysql_error_code,‘HY000’是sqlstate_value
处理程序
可以为sql执行过程中发生的某种类型的错误定义特殊的处理程序
语法
declare 处理方式 handler for 错误类型 处理语句
处理方式
- continue:遇到错误不处理,继续执行
- exit:遇到错误马上退出
- undo:遇到错误后撤回之前的操作。mysql暂不支持
错误类型
- sqlstate '错误码':长度为5的sqlstate_value类型的错误码
- mysql_error_code:匹配数值类型错误码
- 错误名称:定义条件中定义的错误名称
- sqlwarning:匹配所有以01开头的sqlstate错误代码
- not found:匹配所有以02开头的sqlstate错误代码
- sqlexception:匹配所有没有被sqlwarning和not found捕获的sqlstate错误代码
处理语句
如果出现了指定的异常,则采用对应的处理方式,并执行指定的处理语句。语句可以像“set 变量 = 值”这样的简单语句,也可以使用begin...end编写的复合语句