1 -- 1、DECLARE EXIT HANDLER FOR SQLEXCEPTION 語句後面可以跟一個 begin end的複合語句塊,也可以直接跟一個簡單語句例如 :DECLARE EXIT HANDLER FOR SQLEXCEPTION v_succ=0; 3 -- 2、EXIT會在執行... ...
1 -- 1、DECLARE EXIT HANDLER FOR SQLEXCEPTION 語句後面可以跟一個 begin end的複合語句塊,也可以直接跟一個簡單語句例如 :DECLARE EXIT HANDLER FOR SQLEXCEPTION v_succ=0;
3 -- 2、EXIT會在執行異常後執行執行 FOR SQLEXCEPTION 後的語句或塊而整個停止下來;CONTINUE選項會在異常後繼續執行,從而將id為2的記錄寫入到資料庫中。
4
5 DROP PROCEDURE IF EXISTS p_test;
6 delimiter //
7 CREATE PROCEDURE p_test(OUT v_succ tinyint)
8 BEGIN
9 DECLARE EXIT HANDLER FOR SQLEXCEPTION
10 BEGIN
11 SET v_succ=0;
12 ROLLBACK;
13 END;
14 SET v_succ=1;
15 START TRANSACTION;
16 INSERT INTO tb_test (id) VALUES (1);
17 SIGNAL SQLSTATE '45001' SET MYSQL_ERRNO=2000,MESSAGE_TEXT='故意觸發異常';
18 INSERT INTO tb_test (id) VALUES (2);
19 COMMIT;
20 END;//
21 delimiter ;