查看“MySQL 异常处理”的源代码
←
MySQL 异常处理
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
MySQL 异常处理 === 定义异常处理 === DECLARE ... HANDLER, 必须出现在变量或条件声明的后面 当某个错误(condition_value)发生时,执行指定的语句(statement),执行完之后再决定如何操作(action) DECLARE action HANDLER FOR condition_value [, condition_value, ...] statement ===== action ===== CONTINUE | EXIT # exit 只退出当前 begin end ===== condition_value ===== * mysql_error_code# MySQL 自定义的错误代码 * SQLSTATE [VALUE]# ANSI SQL和 ODBC 的标准化的错误代码 * condition_name # * SQLWARNING # 01 开头sqlstate码 * NOT FOUND # 02 开头sqlstate码,数据不存在的错误,如在使用游标或者SELECT无数据 * SQLEXCEPTION # 除‘01’或‘02’开头的所有sqlstate码 如:ERROR 1045 (28000): Access denied for user 'admin'@'m02' (using password: NO) DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET error = '23000'; DECLARE CONTINUE HANDLER FOR SQLSTATE '21S01' SET error = '21S01'; DECLARE CONTINUE HANDLER FOR 1136 SET error = '21S01'; # 错误编号和SQLSTATE码 DECLARE CONTINUE HANDLER FOR SQLWARNING BEGIN END; # 忽略某类错误 DECLARE EXIT HANDLER FOR SQLWARNING, NOT FOUND, SQLEXCEPTION ... # 获取所有异常 DECLARE CONTINUE HANDLER FOR NOT FOUND set error = 1; # 忽略某类错误,置错误状态 === 错误处理器的优先级 === 当有多个错误处理器都满足特定错误条件的时候,MySQL将按更明确者优先的原则决定优先级。 MySQL中的每个错误都会映射到一个特定的错误码,因此错误码是最明确的。一个 SQLSTATE 可以对应到多个 MySQL 错误码,所以没那么明确。SQLEXCEPTION 和 SQLWARNING 分别指代的是 SQLSTATES 中类型相近的一组值,所以它的明确性最低。 基于错误处理器的优先级规则,MySQL 错误码处理器,SQLSTATE 错误处理器 和 SQLEXCEPTION错误处理器顺序上分别排在1、2、3位。 [[分类:Develop]] [[分类:DB]] [[分类:MySQL]]
返回
MySQL 异常处理
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
目录
文章分类
侧边栏
帮助
工具
链入页面
相关更改
特殊页面
页面信息