MySQL-异常机制

Author Avatar
丁起男 05月 06,2022
  • 在其它设备中阅读本文章

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编写的复合语句