MySQL 如何在存储过程中编写MySQL处理程序,以使用SQLSTATE作为默认的MySQL错误并退出执行?
我们知道,每当MySQL存储过程中发生异常时,通过抛出适当的错误消息处理异常非常重要,因为如果我们不处理异常,则存在在存储过程中由某个特定异常导致应用程序失败的可能性。MySQL提供了使用SQLSTATE作为默认MySQL错误并退出执行的处理程序。为了演示它,我们将使用以下示例,其中我们试图在主键列中插入重复值。
例如
mysql> Delimiter //
mysql> Create Procedure Insert_Studentdetails4(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20),OUT got_error INT)
-> BEGIN
-> DECLARE EXIT HANDLER FOR 1062 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)
现在,如果我们尝试添加任何列“studentid”的重复值,它将退出执行,它不会提供存储过程“select * from student_detail”中的查询结果集,只会给出关于输入重复值的默认MySQL错误消息1062,并将变量got_error的值设置为1。
mysql> Delimiter ;
mysql> CALL Insert_Studentdetails4(104,'Ram','Chandigarh',@got_error);
Query OK, 0 rows affected (0.00 sec)
mysql> Select @got_error;
+------------+
| @got_error |
+------------+
| 1 |
+------------+
1 row in set (0.00 sec)
阅读更多:MySQL 教程
极客教程