WEB开发网
开发学院数据库MySQL MySQL 5.0新特性教程 存储过程:第四讲 阅读

MySQL 5.0新特性教程 存储过程:第四讲

 2005-10-31 16:42:19 来源:WEB开发网   
核心提示: 7. DECLARE CONTINUE HANDLER exampleCREATE TABLE t4 (s1 int,Prima(最完善的虚拟主机管理系统)ry key(s1));//CREATE PROCEDURE p23 ()BEGINDECLARE CONTINUE HANDLERFOR SQLSTATE &

7. DECLARE CONTINUE HANDLER example

CREATE TABLE t4 (s1 int,Prima(最完善的虚拟主机管理系统)ry key(s1));//
CREATE PROCEDURE p23 ()
BEGIN
DECLARE CONTINUE HANDLER
FOR SQLSTATE '23000' SET @x2 = 1; <--
SET @x = 1;
INSERT INTO t4 VALUES (1);
SET @x = 2;
INSERT INTO t4 VALUES (1);
SET @x = 3;
END;//


  由于插入失败,错误处理程序被触发,开始进行错误处理。下一个执行的语句是错误处理的语句,@x2被设为2。


8. DECLARE CONTINUE HANDLER example

CREATE TABLE t4 (s1 int,Prima(最完善的虚拟主机管理系统)ry key(s1));//
CREATE PROCEDURE p23 ()
BEGIN
DECLARE CONTINUE HANDLER
FOR SQLSTATE '23000' SET @x2 = 1;
SET @x = 1;
INSERT INTO t4 VALUES (1);
SET @x = 2;
INSERT INTO t4 VALUES (1);
SET @x = 3; <--
END;//


  到这里并没有结束,因为这是CONTINUE异常处理。所以执行返回到失败的插入语句之后,继续执行将@x设定为3动作。

9. DECLARE CONTINUE HANDLER example

MySQL(和PHP搭配之最佳组合)> CALL p23()//
Query OK, 0 rows affected (0.00 sec)
MySQL(和PHP搭配之最佳组合)> SELECT @x, @x2//

+------+------+
| @x | @x2 |
+------+------+
| 3 | 1 |
+------+------+
1 row in set (0.00 sec)


  运行过程后我们观察@x的值,很确定的可以知道是3,观察@x2的值,为1。从这里可以判断程序运行无误,完全按照我们的思路进行。大家可以花点时间去调整错误处理器,让检查放在语句段的首部,而不是放在可能出现错误的地方,虽然那样看起来程序很紊乱,跳来跳去的感觉。但是这样的代码很安全也很清楚。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:MySQL 特性 教程

编辑录入:coldstar [复制链接] [打 印]
赞助商链接