MySQL定义条件还有处理程序
在措施的运行进程中也许会碰着题目,此时我们可以通过界说前提和处理赏罚措施来事先界嗣魅这些题目。 界说前提是指事先界说措施执行进程中碰着的题目,处理赏罚措施界说了在碰着这些题目时该当采纳的处理赏罚方法息争决步伐,担保存储进程和函数在碰着告诫或错误时能继承执行,从而加强措施处理赏罚题目的手段,停止措施呈现非常被遏制执行。 下面将具体讲授怎样界说前提和处理赏罚措施。 1. 界说前提 MySQL 中可以行使 DECLARE 要害字来界说前提。其根基语法如下: DECLARE condition_name CONDITION FOR condition_value condition value: SQLSTATE [VALUE] sqlstate_value | mysql_error_code 个中: condition_name 参数暗示前提的名称; condition_value 参数暗示前提的范例; sqlstate_value 参数和 mysql_error_code 参数都可以暗示 MySQL 的错误。sqlstate_value 暗示长度为 5 的字符串范例错误代码,mysql_error_code 暗示数值范例错误代码。譬喻 ERROR 1146(42S02) 中,sqlstate_value 值是 42S02,mysql_error_code 值是 1146。 例 1 下面界说“ERROR 1146 (42S02)”这个错误,名称为 can_not_find。 可以用两种差异的要领来界说,代码如下: //要领一:行使sqlstate_value DECLARE can_not_find CONDITION FOR SQLSTATE '42S02'; //要领二:行使 mysql_error_code DECLARE can_not_find CONDITION FOR 1146; 2. 界说处理赏罚措施 MySQL 中可以行使 DECLARE 要害字来界说处理赏罚措施。其根基语法如下: DECLARE handler_type HANDLER FOR condition_value[...] sp_statement handler_type: CONTINUE | EXIT | UNDO condition_value: SQLSTATE [VALUE] sqlstate_value | condition_name | SQLWARNING | NOT FOUND | SQLEXCEPTION | mysql_error_code 个中,handler_type 参数指明错误的处理赏罚方法,该参数有 3 个取值。这 3 个取值别离是 CONTINUE、EXIT 和 UNDO。CONTINUE 暗示碰着错误不举办处理赏罚,继承向下执行; EXIT 暗示碰着错误后顿时退出; UNDO 暗示碰着错误后撤回之前的操纵,MySQL 中暂且还不支持这种处理赏罚方法。 留意:凡是环境下,执行进程中碰着错误应该立即遏制执行下面的语句,而且撤回前面的操纵。可是,MySQL 中此刻还不能支持 UNDO 操纵。因此,碰着错误时最好执行 EXIT 操纵。假如事先可以或许猜测错误范例,而且举办响应的处理赏罚,那么可以执行 CONTINUE 操纵。 参数指明错误范例,该参数有 6 个取值: sqlstate_value:包括 5 个字符的字符串错误值; condition_name:暗示 DECLARE 界说的错误前提名称; SQLWARNING:匹配全部以 01 开头的 sqlstate_value 值; NOT FOUND:匹配全部以 02 开头的 sqlstate_value 值; SQLEXCEPTION:匹配全部没有被 SQLWARNING 或 NOT FOUND 捕捉的 sqlstate_value 值; mysql_error_code:匹配数值范例错误代码。 sp_statement 参数为措施语句段,暗示在碰着界说的错误时,必要执行的一些存储进程或函数。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |