Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Handler gán giá trị biến và tiếp tục thực thi trong MySQL stored procedure

Ví dụ handler CONTINUE gán biến lỗi và chạy tiếp:

mysql> DELIMITER //
mysql> CREATE PROCEDURE Insert_Studentdetails2(
    S_Studentid INT, S_StudentName VARCHAR(20), S_Address VARCHAR(20), OUT got_error INT)
    -> BEGIN
    -> DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET got_error=1;
    -> INSERT INTO Student_detail (Studentid, StudentName, Address)
    -> VALUES(S_Studentid, S_StudentName, S_Address);
    -> SELECT * FROM Student_detail;
    -> END //
Query OK, 0 rows affected (0.00 sec)

Chèn trùng khóa (id=104):

mysql> CALL Insert_Studentdetails2(104,'Shyam','Hisar',@got_error);
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
| 100       | Gaurav      | Delhi      |
| 101       | Raman       | Shimla     |
| 103       | Rahul       | Jaipur     |
| 104       | Ram         | Chandigarh |
+-----------+-------------+------------+
4 rows in set (0.00 sec)

mysql> SELECT @got_error;
+------------+
| @got_error |
+------------+
| 1          |
+------------+

Dù lỗi trùng khóa, thủ tục vẫn chạy SELECT * (trả về dữ liệu cũ) và gán got_error=1.