我们如何在存储过程中编写MySQL处理程序,该处理程序会引发错误消息并继续执行?
我们知道,每当MySQL存储过程中发生异常时,通过抛出适当的错误消息来处理它就非常重要,因为如果我们不处理该异常,则有可能使存储过程中存在该特定异常的应用程序失败。MySQL提供了一个引发错误消息并继续执行的处理程序。为了说明这一点,我们使用下面的示例,在该示例中,我们尝试在主键列中插入重复的值。
例
mysql> DELIMITER // mysql> Create Procedure Insert_Studentdetails(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20)) -> BEGIN -> DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SELECT 'Got an error'; -> INSERT INTO Student_detail -> (Studentid, StudentName, Address) -> Values(S_Studentid,S_StudentName,S_Address); -> Select * from Student_detail; -> END //
调用上面的过程,如果我们尝试在“studentid”列中输入重复的值,它将抛出一条错误消息“getanerror”并继续执行。
mysql> Delimiter ; mysql> CALL Insert_Studentdetails(100, 'Gaurav', 'Delhi'); +-----------+-------------+---------+ | Studentid | StudentName | address | +-----------+-------------+---------+ | 100 | Gaurav | Delhi | +-----------+-------------+---------+ 1 row in set (0.11 sec) mysql> CALL Insert_Studentdetails(101, 'Raman', 'Shimla'); +-----------+-------------+---------+ | Studentid | StudentName | address | +-----------+-------------+---------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | +-----------+-------------+---------+ 2 rows in set (0.06 sec) mysql> CALL Insert_Studentdetails(101, 'Rahul', 'Jaipur'); +--------------+ | Got an error | +--------------+ | Got an error | +--------------+ 1 row in set (0.03 sec) +-----------+-------------+---------+ | Studentid | StudentName | address | +-----------+-------------+---------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | +-----------+-------------+---------+ 2 rows in set (0.04 sec) mysql> CALL Insert_Studentdetails(103, 'Rahul', 'Jaipur'); +-----------+-------------+---------+ | Studentid | StudentName | address | +-----------+-------------+---------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | | 103 | Rahul | Jaipur | +-----------+-------------+---------+ 3 rows in set (0.08 sec)
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短