MySQL定义异常和异常处理方法(二)

2014-11-24 15:38:02 · 作者: · 浏览: 1
. Your MySQL connection id is 53 Server version: 5.5.38-0ubuntu0.14.04.1 (Ubuntu) mysql> use wms; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from location; Empty set (0.00 sec) mysql> select @x; +------+ | @x | +------+ | NULL | +------+ 1 row in set (0.00 sec)

示例2:定义异常处理情况下:

DELIMITER //
CREATE PROCEDURE handlerInsertWithException()
BEGIN
	DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2=1;
	SET @x=1;
	INSERT INTO location VALUES (1,'Beijing');
	SET @x=2;
	INSERT INTO location VALUES (1,'Wuxi');
	SET @x=3;
END;
//
DELIMITER ;

调用存储过程与结果:
mysql> CALL handlerInsertWithException();
Query OK, 0 rows affected (0.09 sec)

mysql> select @x;
+------+
| @x   |
+------+
|    3 |
+------+
1 row in set (0.00 sec)

说明与结论:

一、MySQL中,@var_name表示用户变量,使用SET语句为其赋值,用户变量与连接有关,一个客户端定义的变量不能被其他客户端看到或者使用。当客户端退出时,该客户端连接的所有变量将自动释放。

二、在示例1中,由于注释了异常的声明"",此时向表中插入相同主键,就会触发异常,并且采取默认(EXIT)路径;且查看此时的@x返回2,表示下面的INSERT语句并没有执行就退出了.

三、定义了异常处理,此时遇到错误也会按照异常定义那样继续执行;但只有第一条数据被插入到表中,此时用户变量@x=3说明已经执行到了结尾;

-----------------------------------------------------------------------------------------------------------------------------

如果您们在尝试的过程中遇到什么问题或者我的代码有错误的地方,请给予指正,非常感谢!

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处!