laobao 发表于 2010-2-2 15:02:49

mysql是否支持这样的语句:DECLARE EXIT HANDLER FOR sqlexception ROLLBACK

如题,mysql是否支持这样的语句?在mysql 5.1的手册中看到如下内容:
mysql> CREATE PROCEDURE handlerdemo ()
    -> BEGIN
    ->   DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;
    ->   SET @x = 1;
    ->   INSERT INTO test.t VALUES (1);
    ->   SET @x = 2;
    ->   INSERT INTO test.t VALUES (1);
    ->   SET @x = 3;
    -> END;
    -> //
但我5.0 和 5.1版本测试上述语句时, DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;这句总是报语法错误。

kider 发表于 2010-2-2 15:43:04

支持,你用报错后输出的信息,替换23000就可以了

laobao 发表于 2010-2-2 16:42:24

mysql> DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1' at line 1
这是在我电脑上运行的错误,我用1064和42000替换23000都不对啊,还是同样的错误。

kider 发表于 2010-2-2 17:16:13

那就换种方式,例:DECLARE EXIT HANDLER FOR 1064
看看语法...
页: [1]
查看完整版本: mysql是否支持这样的语句:DECLARE EXIT HANDLER FOR sqlexception ROLLBACK