查看: 2155|回复: 0

[Mysql数据库] MYSQL存储过程中事务和DECLARE EXIT/CONTINUE HANDLER的使用

发表于 2018-4-28 08:00:00
  1. 1 -- 1、DECLARE EXIT HANDLER FOR SQLEXCEPTION 语句后面可以跟一个 begin end的复合语句块,也可以直接跟一个简单语句例如 :DECLARE EXIT HANDLER FOR SQLEXCEPTION v_succ=0;
  2. 3 -- 2、EXIT会在执行异常后执行执行 FOR SQLEXCEPTION 后的语句或块而整个停止下来;CONTINUE选项会在异常后继续执行,从而将id为2的记录写入到数据库中。
  3. 4
  4. 5 DROP PROCEDURE IF EXISTS p_test;
  5. 6 delimiter //
  6. 7 CREATE PROCEDURE p_test(OUT v_succ tinyint)
  7. 8 BEGIN
  8. 9 DECLARE EXIT HANDLER FOR SQLEXCEPTION
  9. 10 BEGIN
  10. 11 SET v_succ=0;
  11. 12 ROLLBACK;
  12. 13 END;
  13. 14 SET v_succ=1;
  14. 15 START TRANSACTION;
  15. 16 INSERT INTO tb_test (id) VALUES (1);
  16. 17 SIGNAL SQLSTATE '45001' SET MYSQL_ERRNO=2000,MESSAGE_TEXT='故意触发异常';
  17. 18 INSERT INTO tb_test (id) VALUES (2);
  18. 19 COMMIT;
  19. 20 END;//
  20. 21 delimiter ;
复制代码



回复

使用道具 举报